RTFM.WIKI

Ordnung muß sein. Ordnung über alles (18+)

Инструменты пользователя

Инструменты сайта


linux:sftp_chroot

Настройка 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 у пользователя полные права на чтение/запись.

Обсуждение

Ваш комментарий. Вики-синтаксис разрешён:
 
linux/sftp_chroot.txt · Последнее изменение: 2017/10/15 02:32 — 127.0.0.1