Я начинаю очень маленькую хостинговую компанию для нескольких друзей и маленьких клиентов, ничего особенного.
Я хочу дать своим «клиентам» право управлять своими файлами на сервере. Я ненавижу FTP, так как он небезопасен и, на мой взгляд, устарел.
Поэтому я хотел бы разрешить моим пользователям подключаться через SFTP, но не позволять им подключаться через SSH. (Я знаю, я знаю, что SFTP использует SSH). Но мне было интересно, возможно ли это?
Так что мне не пришлось бы устанавливать FTP-сервис на сервер, и все было бы круто!
Начиная с версии 4.9 OpenSSH (недоступно в centos 5.x, но функция ChrootDirectory была перенесена обратно) имеет internal-sftp
подсистема:
Subsystem sftp internal-sftp
А затем заблокируйте другое использование:
Match group sftponly
ChrootDirectory /home/%u
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
Добавьте своих пользователей в sftponly
группа. Вы должны изменить домашний каталог пользователя на /
из-за chroot и /home/user
должен принадлежать root
. Я бы также установил /bin/false
как оболочка пользователя.
Есть ракушка scponly что делает это. Это может chroot слишком.
Checkout rssh - поддельная оболочка, разрешающая sftp, но запрещающая ssh
Подробнее о RSSH
http://www.pizzashack.org/rssh/
RPMs
http://pkgs.repoforge.org/rssh/
Вы можете настроить rssh, чтобы разрешить / запретить различное поведение, такое как sft, scp и т. Д.
Вы можете изменить / etc / passwd и предоставить этому пользователю поддельную оболочку, чтобы он не мог использовать ssh.
Я использую метод указания оболочки пользователя как / bin / false, как уже упоминалось. Однако вы должны убедиться, что / bin / shell находится в / etc / shells. Тогда работает ssh = no ftp = ok.
Я также использую vsftpd и добавляю это
chroot_local_user = YES в /etc/vsftpd/vsftpd.conf, чтобы ftp-пользователи не могли видеть дату, отличную от своей.
Преимущество этих простых изменений - отсутствие раздражающей конфигурации для конфигурации ssh для каждого пользователя.
Не забудь найти линию UsePAM yes
и прокомментируйте это:
#UsePAM yes
Если не отключить это, ваш SSH-сервер выйдет из строя при перезагрузке / перезапуске. Поскольку вам не нужны причудливые функции PAM, это нормально.
Настроить ssh для включения только sftp для некоторых выбранных пользователей - хорошая идея, и она работает правильно, при условии, что вы установили либо scponly
или rssh
.
rssh
работает нормально, если вам не нужно настраивать тюрьму, в этом случае пытаться следовать инструкциям, приведенным в руководствах CHROOT, безумие, что приводит к «копированию» больших частей системных исполняемых файлов и библиотеки чуть ниже «каждой пользовательской тюрьмы», включая rssh
сама оболочка. Это метод, который тратит много места.
scponly
требует глубокого понимания конфигурации, что приводит к постоянной проблеме отказа от входа в систему в случае установки тюрьмы.
Простой способ разрешить функциональные возможности ftp с должным образом работающей тюрьмой, поддержкой SSL / TLS для безопасных транзакций и входа в систему - это использовать «старый, но работающий» VSFTPD, который устанавливается быстро и чисто и предлагает все возможности настройки по мере необходимости и, наконец, но не в последнюю очередь: это работает!
Маурицио.
К сожалению, все ответы вводят в заблуждение: пожалуйста, сделайте следующее:
Сначала создайте пользователя sftp и группу sftp
Создайте отдельный каталог в качестве корневого для файлов SFTP: sudo mkdir -p /home/sftpdir
#$OpenBSD: sshd_config,v 1.101 2017/03/14 07:19:07 djm Exp $ # This is the sshd server system-wide configuration file. See # sshd_config(5) for more information. # This sshd was compiled with PATH=/usr/bin:/bin:/usr/sbin:/sbin # The strategy used for options in the default sshd_config shipped with # OpenSSH is to specify options with their default value where # possible, but leave them commented. Uncommented options override the # default value. Port 38250 Port 22 PasswordAuthentication no ChallengeResponseAuthentication no # Set this to 'yes' to enable PAM authentication, account processing, # and session processing. If this is enabled, PAM authentication will # be allowed through the ChallengeResponseAuthentication and # PasswordAuthentication. Depending on your PAM configuration, # PAM authentication via ChallengeResponseAuthentication may bypass # the setting of "PermitRootLogin without-password". # If you just want the PAM account and session checks to run without # PAM authentication, then enable this but set PasswordAuthentication # and ChallengeResponseAuthentication to 'no'. UsePAM yes X11Forwarding yes PrintMotd no # Allow client to pass locale environment variables AcceptEnv LANG LC_* #DenyUsers sftpuser # override default of no subsystems Subsystem sftp internal-sftp Match group sftp Match User sftpuser Match LocalPort 38250 ForceCommand internal-sftp ChrootDirectory /home/sftpdir PermitTunnel no AllowAgentForwarding no X11Forwarding no AllowTcpForwarding no
Перезапустите и проверьте статус службы sshd
sudo service sshd перезапуск
статус службы sshd
Создайте файл оболочки. Добавить выполнение для вывода уведомляющего сообщения
sudo touch / bin / sftponly echo -e '#! / bin / sh \ necho "Эта учетная запись ограничена только доступом по SFTP."' | sudo tee -a / bin / sftponly
Предоставьте разрешения на выполнение и добавьте в файл оболочки
sudo chmod a + x / bin / sftponly echo "/ bin / sftponly" | sudo tee -a / etc / shells
наконец, проверьте, и вы не сможете подключиться.
Шаблон для использования клиента SFTP с ключом SSH и базовой детализацией:
sftp -v -oPort = $ RANDOM_PORT -i ~ / .ssh / $ SSH_KEY.pem sftpuser @ $ HOST