Настройка SFTP через дефолтный SSHD¶
Самый банальный способ, который:
- Работает без необходимости устанавливать различные sftp сервера (например mysecureshell)
- Умеет работать с PAM-модулями (привет доменная авторизация)
Создаем пользователя и группу¶
- Создаем пользователя, который будет иметь доступ к SFTP. Будем делать пользователя
fuser
:
- Задаём ему пароль:
- Делаем группу
sftpusers
. В этой группе будут находиться все пользователи, которые будут иметь доступ к каталогам нашего sftp сервера: - Добавляем нашего пользователя в группу:
Настраиваем каталог¶
- Создаем каталог по пути
/var/sftp/shared
:
Важно
Почему нужно создавать каталог именно так?
Чуть ниже мы будем давать доступ к /var/sftp. У пользователя будет виден только каталог shared. Для chroot важно, чтобы он имел доступ к корневому каталогу.
- Выдаем доступы на группу и на чтение с записью:
Настраиваем SFTP-сервер¶
- Открываем файл на редактирование
/etc/ssh/sshd_config
любимым редактором -
Добавляем в него следующие строчки:
Match User fuser ForceCommand internal-sftp ChrootDirectory /var/sftp PermitTunnel no AllowAgentForwarding no AllowTcpForwarding no X11Forwarding no
Разберемся, что делает каждая из строчек:
Match User fuser
- следующие строчки будут применены для юзера fuserForceCommand internal-sftp
- подключаем юзера через SFTP, доступ в шелл отключаетсяChrootDirectory /var/sftp
- ограничиваем доступ пользователя только в рамках папки/var/sftp
PermitTunnel no
- запрещаем делать тонеллиAllowAgentForwarding no
- запрещаем agent forwardingAllowTcpForwarding no
- запрещаем перенаправлять tcp пакетыX11Forwarding no
- запрещаем форвардить графические приложения
-
Сохраняем файл
- Рестартуем сервис:
systemctl restart sshd
Траблшутинг¶
В случае чего имеет смысл включить дебаг в /etc/ssh/sshd_config
и посмотреть логи. Как правило, в логах всё написано.
Сам лог зачастую находится в /var/log/sshd
или /var/log/auth.log