Настройка SFTP доступа
- Recluse
- 12.04.2016
- 55 229
- 9
- 18.03.2019
- 8
- 7
- 1
Если по какой-то причине потребовалось дать удаленный доступ к файлам на компьютер под управлением операционной системы из семейства Linux, то безопаснее всего будет это сделать через SFTP. SFTP обозначает SSH File Transfer Protocol, и не имеет никакого отношения к обычному FTP протоколу, а так же в разы безопаснее. Однако, приступим к настройке.
Создание пользователя для SFTP
Создаем нового пользователя:
useradd -m -s /sbin/nologin crazyadmin
-m - указывает необходимость создать домашнюю директорию пользователя в каталоге /home;
-s - задает оболочку пользователя - /sbin/nologin запрещает пользователю использовать shell.
crazyadmin - имя пользователя
Устанавливаем созданному пользователю пароль:
passwd crazyadmin
Если что-то пошло не так, то всегда можно удалить пользователя командой userdel username, например:
userdel crazyadmin
И создадим для нового пользователя папку chroot, о её предназначении будет рассказано ниже.
mkdir /home/crazysadmin/chroot
Настройка сервера SSH
Теперь отправляемся в конфиг SSH - /etc/ssh/sshd_config
Ищем следующую строчку:
Subsystem sftp /usr/lib/openssh/sftp-server
и меняем на
Subsystem sftp internal-sftp
Теперь отправляемся в самый конец конфига, и там дописываем:
Match User crazyadmin
X11Forwarding no
AllowTcpForwarding no
AllowAgentForwarding no
PermitTunnel no
ForceCommand internal-sftp
ChrootDirectory %h/chroot
ChrootDirectory - родительский каталог той папки, к которой мы хотим открыть доступ по SFTP. В данном примере используется директория chroot, которая лежит в папке пользователя.
Если на вашем сервере настроен доступ по SSH только через файл ключа, а нужно сделать возможность заходить по паролю, то тогда дописываем еще следующее:
PasswordAuthentication yes
После завершения всех манипуляций с SSH сервером, его нужно перезагрузить:
service ssh restart
Настройка директорий для пользователя SFTP
Отправляемся в директорию /home и там ищем папку свежесозданного пользователя, а в ней папку chroot. Устанавливаем её владельцем пользователя root:
chown root:root /home/crazyadmin/chroot
Устанавливаем нужные права на папку:
chmod 755 /home/crazyadmin
Теперь представим, что нам нужно предоставить доступ к нескольким папкам, и они все лежат за пределами ChrootDirectory. Выход из ситуации следующий:
Допустим нам нужно разрешить доступ к папке /var/www/sysadmin.ru. Создаем в домашнем каталоге пользотвателя /home/crazyadmin папку с названием sysadmin.ru.
mkdir /home/crazyadmin/sysadmin.ru
Теперь смонтируем в эту папку ту директорию, доступ к которой нам нужно обеспечить:
mount --bind /var/www/pc.ru/ /home/crazyadmin/pc.ru/chroot
Выставляем необходимые для редактирования права для нашей директории /var/www/sysadmin.ru:
chmod 777 /var/www/sysadmin.ru
find /var/www/sysadmin.ru -type f -exec chmod 664 {} +
find /var/www/sysadmin.ru -type d -exec chmod 777 {} +
Если в процессе монтирования директории что-то пошло не так, то можно убрать монтирование командой unmount:
umount /home/crazysyadmin/sysadmin.ru
На этом настройка SFTP сервера завершена.
Частые ошибки
- fatal: bad ownership or modes for chroot directory component - как писалось выше, данная ошибка появляется тогда, когда владельцем ChrootDirectory является не пользователь root, и права не равны 755.
- No supported authentication methods available (server sent public key) - сервер настроен на авторизацию по ключу. Если нужна авторизация по паролю, то в конфиге /etc/ssh/sshd_config нужно поменять значение у переменной PasswordAuthentication с no на yes, а после перезапустить сервер командой service ssh restart.
Добавить комментарий