Настройка SFTP сhroot
Как предоставить пользователю доступ к серверу по SFTP протоколу.
Добавляем в файл /etc/ssh/sshd_config
Subsystem sftp internal-sftp Match group sftponly ChrootDirectory /home/%u X11Forwarding no AllowTcpForwarding no ForceCommand internal-sftp
В нём же комментируем строку
Subsystem sftp /usr/lib/openssh/sftp-server
Создаём новую группу для доступа по sftp
addgroup --system sftponly
Создаём нового пользователя и добавляем его в группу sftponly
adduser john usermod -a -G sftponly john
Справка по usermod - usermod(8) - Linux man page
-a, --append Add the user to the supplementary group(s). Use only with the -G option.
Ставим правильные права на каталог /home/john
chmod 750 /home/john chown root:john /home/john
Если этого не сделать, то в /var/log/auth.log
будет ошибка bad ownership.
Sep 25 05:23:38 vm1337 sshd[17331]: Accepted password for john from a.b.c.d port 54512 ssh2 Sep 25 05:23:38 vm1337 sshd[17331]: pam_unix(sshd:session): session opened for user john by (uid=0) Sep 25 05:23:38 vm1337 sshd[17340]: fatal: bad ownership or modes for chroot directory "/home/john" Sep 25 05:23:38 vm1337 sshd[17331]: pam_unix(sshd:session): session closed for user john
В WinSCP это выглядит так
В Ubuntu также была ошибка Directive 'UsePAM' is not allowed within a Match block.
# systemctl restart ssh Job for ssh.service failed because the control process exited with error code. See "systemctl status ssh.service" and "journalctl -xe" for details.
Смотрим systemctl status ssh.service
systemd[1]: Stopped OpenBSD Secure Shell server. systemd[1]: Starting OpenBSD Secure Shell server... sshd[17397]: /etc/ssh/sshd_config line 98: Directive 'UsePAM' is not allowed within a Match block systemd[1]: ssh.service: Main process exited, code=exited, status=255/n/a systemd[1]: Failed to start OpenBSD Secure Shell server. systemd[1]: ssh.service: Unit entered failed state. systemd[1]: ssh.service: Failed with result 'exit-code'.
Опция UsePAM yes
должна быть перед секцией Match
.
Правильно
UsePAM yes Match group sftponly ChrootDirectory /home/%u X11Forwarding no AllowTcpForwarding no ForceCommand internal-sftp
Неправильно
Match group sftponly ChrootDirectory /home/%u X11Forwarding no AllowTcpForwarding no ForceCommand internal-sftp UsePAM yes
Пробуем подключиться (например через WinSCP).
Итог: пользователь john может подключаться к хосту по протоколу sftp и не может выйти за пределы каталога /home/john. Внутри каталога /home/john у пользователя полные права на чтение/запись.
Обсуждение