Как настроить односторонний scp?

Я поместил Ваш отрывок в файл, названный alois:

sed -r 's/^([^ ,]+)[^0-9]+([0-9]+).*$/\1 \2/' alois 
Aloise-Young 1993
Banerjee 2002
Bennett 1989

Быстрое объяснение: мы используем поиск sed и заменяем функцию s/pattern/replacement/

^ ([^], +) средства: с начала строки берут что-либо, что это не пространство или a, и помните их. (это - то, что круглые скобки там для).

[^0-9] + ищут что-либо, что это не числовое значение, но проигнорируйте его.

([0-9] +), берут и помнят любые последовательные цифры

.* $ соответствуют всему остальному в конец строки.

\1 \2 замены все подобранное (целая строка) с помнившими значениями сверху.

5
06.02.2016, 19:34
2 ответа

Если бы вы хотите всю установку весь ограничивающий материал, вы упоминаете, что я предложил бы использовать ProFTPd.

Используя sftp_module вы можете только позволить безопасную сессию. См. http://www.proftpd.org/docs/contrib/mod_sftp.html для получения дополнительной информации о функциональность sftp . Около конца страницы перечисляется конфигурация в качестве примера.

Используя директива DefaultRoot можно изолировать предоставленного пользователя в его собственный каталог

Используя <ПРЕДЕЛ> структура, вы можете ограничить FTP, управляет, чтобы вы хотели позволить, т.е. ЧИТАЕТ , таким образом, пользователь не может получить файлы. См. http://www.proftpd.org/docs/howto/Limit.html для деталей.

, Когда вы устанавливаете конфигурация sftp в ProFTPd, вы, вероятно, хотите иметь его для слушания на другом порте, чем ssh, например, 2222. Настроить свой брандмауэр и/или маршрутизатор для разрешения трафика, происходящего от незнакомец к порту, который вы выбираете для ProFTPd. Другая возможность состоит в том, чтобы выполнить ProFTPd модуль sftp на порте 22 и реконфигурировать ssh для слушания на другом порте.

демонстрационная конфигурация А может быть похожей:

<IfModule mod_sftp.c>
  <VirtualHost a.b.c.d>
    # The SFTP configuration
    Port 2222

    SFTPEngine on
    SFTPLog /var/log/proftpd_sftp.log

    # Configure the RSA, DSA, and ECDSA host keys, using the same host key
    # files that OpenSSH uses. 
    SFTPHostKey /etc/ssh_host_rsa_key
    SFTPHostKey /etc/ssh_host_dsa_key
    SFTPHostKey /etc/ssh_host_ecdsa_key

    <Limit READ>
      DenyAll
    </Limit>

    DefaultRoot ~ users,!staff

  </VirtualHost>
</IfModule>

Примечание : Это не полная конфигурация ProFTPd, необходимо рассмотреть и изменить конфигурацию значения по умолчанию ProFTPd, чтобы иметь его, соответствует потребности.


существует другая возможность просто использовать OpenSSH для этого:

Создают пользователя незнакомец и устанавливают пароль для пользователя:

useradd -m -d /home/stranger -s /bin/true stranger
passwd stranger

Редактирование файл /etc/ssh/sshd_config и проверка, если следующая строка существует, добавьте его, если это не делает существует:

Subsystem       sftp    internal-sftp

Следующий добавляют блок Соответствия у основания /etc/ssh/sshd_config:

Match User stranger
    ChrootDirectory  %h
    ForceCommand  internal-sftp -P read,remove
    AllowTcpForwarding no

Примечание : пользователь сможет перезаписать существующий файл.

Перезапуск демон sshd .

Набор владелец каталога /home/stranger к корень :

chown root:stranger /home/stranger

Примечание : корень должен быть владельцем и может быть единственным, чтобы иметь разрешение записи, если ChrootDirectory используется. Альтернатива могла бы быть должна добавить -d %u к ForceCommand, внутренний-sftp строка и установить ChrootDirectory / домой , но пользователь будет мочь к CD / и видеть другие имена пользователей с , ls

Создает каталог загрузки для пользователя:

mkdir /home/stranger/upload; chown stranger:stranger /home/stranger/upload

Теперь можно войти в систему как пользователь незнакомец использование:

sftp stranger@somehost

при загрузке файла, он должен быть в порядке:

sftp> put myfile
Uploading myfile to /upload/myfile
myfile                               100%   17     0.0KB/s   00:00    
sftp> get myfile
Fetching /upload/myfile to myfile
/upload/myfile                         0%    0     0.0KB/s   --:-- ETA
Couldn't read from remote file "/upload/myfile" : Permission denied
3
27.01.2020, 20:40

Лично, если цель состоит в том, чтобы просто разрешить копирование файлов на сервер, я бы пошел по маршруту sftp вместо scp. scp предполагает доступ по ssh, и если нет необходимости предоставлять доступ к оболочке, лучше не пытаться заблокировать его только для передачи файлов.

Итак, sftp. Некоторые рекомендации. Отключите обычный FTP и вместо этого запустите что-то, что позволяет вам легко контролировать доступ, который вы также можете запустить на уникальном порту с помощью sftp. Я только что закончил настраивать proftpd, например, на сервере, и он неплохо справляется со своей задачей. Вы можете заблокировать доступ, чтобы пользователи попадали в свой домашний каталог и не могли перемещаться по всему вашему дереву. Вы также можете определить, какие команды вы разрешаете, например, полностью отключить cd и т. Д. Вы также можете контролировать пользователей FTP, кроме учетных записей * nix, поэтому вы можете создать эту учетную запись пользователя только в контексте FTP и фактически не иметь аккаунт для пользователя.

Дополнительно (для подхода с поясом и подтяжками) на уровне ОС вы можете изменить права доступа к домашнему каталогу пользователей (к которому будет подключаться их сеанс SFTP), чтобы у них была возможность только писать, а не читать (но опять же , вы можете ограничить команды с помощью демона ftp, такого как proftpd, чтобы они тоже не могли получить).

Раньше я пользовался другими ftp-серверами (хотя их имена сейчас ускользают от меня), и все они, кажется, предлагают больше контроля, чем демоны ftp по умолчанию, поэтому я уверен, что другие предоставляют аналогичные функции (я упоминаю proftpd только как Я просто работал над этим, не потому, что считал, что это лучший вариант).

1
27.01.2020, 20:40

Теги

Похожие вопросы