Обновление: приведенный ниже код был обновлен, чтобы отразить изменения, указанные в отмеченном ответе, и поэтому работает должным образом.
Я пытаюсь установить на своем сервере пользователей только для SFTP, которые заключены в тюрьму в своем домашнем каталоге. При попытке подключения к серверу я получаю сообщение об ошибке неработающего канала:
debug1: аутентификация прошла успешно (пароль).
Авторизован на xxxx.xxxxxxxx.com ([XX.XX.XX.XX]:22).
debug2: параметр fd 5 O_NONBLOCK
debug3: fd 6 равен O_NONBLOCK
debug1: канал 0: новый [клиентский сеанс]
отладка3: ssh_session2_open: канал_новый: 0
debug2: канал 0: отправить открытым
debug3: отправить пакет: введите 90
debug1: Запрос [email protected]
debug3: отправить пакет: введите 80
debug1: вход в интерактивный сеанс.
debug1: залог: сеть
debug3: отправить пакет: тип 1
package_write_wait: Соединение с портом XX.XX.XX.XX 22: Неисправный канал
Не удалось прочитать пакет: соединение сброшено узлом
Я определил, что это связано с моими попытками посадить пользователя в тюрьму. Мой sshd_config
включает в себя:
Подсистема sftp внутренний-sftp
Подбор группы
ForceCommand внутренний-sftp -d /%u
Аутентификация по паролю да
ChrootDirectory /home/sftp
РазрешениеТуннель нет
AllowAgentForwarding нет
AllowTcpForwarding нет
X11Номер переадресации
sftponly
это имя группы, которую я создал для пользователей sftp. Владелец и группа / дома / фтп
является корень
только с правами на запись для владельца (0711
).
$ chown root: root /home/sftp
$ chmod 0711 /home/sftp
Вот как я создаю пользователей (в этом примере Бэтмен
) -- обратите внимание, что я делаю это с помощью Perl-скрипта, поэтому я использую chpasswd
:
$ adduser --quiet --disabled-password --shell /bin/false --no-create-home --gecos "Пользователь" Бэтмен
$ эхо "Бэтмен: Бэтмен123" | chpasswd
$ usermod -a -G sftponly Бэтмен
$ install -d -m 0755 /home/sftp/batman -o batman -g sftponly
Примечание. Я вручную создаю домашний каталог пользователей, а не передаю --система
аргумент за Добавить пользователя, так как я получаю сообщение об ошибке, когда позже пытаюсь изменить владельца каталога:
chown: недопустимая группа: «Бэтмен: Бэтмен»
Если я обновлю свой sshd_config
и измените каталог chroot на:
ChrootDirectory /home/sftp
Я могу успешно получить доступ к серверу и больше не получать сообщение об ошибке сломанной трубы. Однако я приземляюсь в / дома / фтп
при входе в систему, где я вижу список всех других пользовательских каталогов, а не попадаю в /дома/sftp/бэтмен
как я и ожидал.
Как я могу улучшить/исправить это, чтобы пользователи:
- имеют доступ только к своему каталогу (
/дома/sftp/бэтмен
)
- при входе в систему будет отображаться в пределах
/
(что на самом деле /дома/sftp/бэтмен
)
- не могу перейти к
/ дома / фтп
(чтобы они не могли видеть список других пользователей)