Настройка SFTP и Chroot на Ubuntu 14.04

less than 1 minute read

В этой статье рассматривается настройка sftp сервера и изоляция пользователей в их домашних каталогах (chroot) на базе Linux Ubuntu 14.04.

Sftp - протокол обмена файлами через безопасное сетевое соединение.
Chroot - изолированая среда.

Для начала создадим группу с пользователями:

groupadd sftpusers

Поскольку sftp - подсистема ssh, то и настройки е находятся в файле sshd_config. Его и нужно подредактировать:

nano /etc/ssh/sshd_config

Находим и коментируем строку:

#Subsystem sftp /usr/lib/openssh/sftp-server

Добавляем прямо под ней строку:

Subsystem sftp internal-sftp

Добавляем следующее в конец документа:

Match Group sftpusers
        X11Forwarding no
        AllowTcpForwarding no
        ChrootDirectory %h
        ForceCommand internal-sftp
        PasswordAuthentication yes

Перезапускаем демон ssh что бы изменения вступили в силу:

initctl restart ssh

Теперь можно и пользователя создать:

useradd -g sftpusers -d /home/**username** -m -s /bin/false **username**

На самом деле оболочка /bin/false отсутствует в файле /etc/shells, но это не вызывает проблем с логином через sftp. На всякий случай ее лучше добавить:

echo `/bin/false` >> /etc/shells

Важным шагом является изменение собственника папки пользователя. Пользователям нельзя писать в свои домашние каталоги:

chown root:root /home/**username**

Если Вам нужно создать папку с правом на запись:

mkdir /home/**username**/upload  
chown **username**:sftpusers /home/**username**/upload