Настройка SFTP доступа

  • Автор:
  • Опубликовано:
  • Изменено:
  • Просмотры: 1 822
  • Комментарии: 0
  • Рейтинг: 100,00%
  • Голосов: 1

Если по какой-то причине потребовалось дать удаленный доступ к файлам на компьютер под управлением операционной системы из семейства Linux, то безопаснее всего будет это сделать через SFTP. SFTP обозначает SSH File Transfer Protocol, и не имеет никакого отношения к обычному FTP протоколу, а так же в разы безопаснее. Однако, приступим к настройке.

Опубликованные ниже манипуляции проводились с операционной системой Debian 7.

Создание пользователя для 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 какие-либо другие права, в таком случае будет выскакивать следующая ошибка: fatal: bad ownership or modes for chroot directory component.

Теперь представим, что нам нужно предоставить доступ к нескольким папкам, и они все лежат за пределами ChrootDirectory. Выход из ситуации следующий:

Допустим нам нужно разрешить доступ к папке /var/www/sysadmin.ru. Создаем в домашнем каталоге пользотвателя /home/crazyadmin папку с названием sysadmin.ru.

mkdir /home/crazyadmin/sysadmin.ru

Теперь смонтируем в эту папку ту директорию, доступ к которой нам нужно обеспечить:

mount --bind /var/www/sysadmin.ru/ /home/crazyadmin/sysadmin.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 сервера завершена.

Частые ошибки

Добавить комментарий

Ваш e-mail не будет опубликован.

Читайте ранее:
Запуск программы требующий права администратора под учетной записью обычного пользователя
Исправляем ошибку: Не удалось запустить размещенную сеть
Системный трей на втором мониторе
Загрузочная флешка с Kaspersky Rescue Disk 10
Как проверить загрузочный образ на флешке или диске
Закрыть