Мой ssh-сервер работает как часы уже 4 года, поэтому я просто хочу добавить пользователя и выполнить chroot для него в определенной папке.
> useradd -m -c /home/thomas -s /bin/sh thomas
> passwd thomas
> chmod 755 /home/thomas
> chown root: /home/thomas
> service ssh restart
Когда я это делаю, яможетподключаюсь ssh
и мое sftp
соединение работает. Проблема в том, что я хочу сделать chroot в определенную папку.
> vim /etc/ssh/sshd_config
Добавьте в конец файла:
Match user thomas
ChrootDirectory /home/%u
Когда я добавляю только это, это не должно ничего менять, верно? Конфигурация должна быть той же, и я все равно должен иметь возможность подключаться или использовать sftp... поэтому я перезапускаю service ssh restart
и больше не могу подключиться к sftp.
На всякий случай:
root@xx:/etc/nginx/sites-enabled# /usr/sbin/sshd -v
sshd: illegal option -- v
OpenSSH_6.0p1 Debian-4+deb7u6, OpenSSL 1.0.1t 3 May 2016
usage: sshd [-46DdeiqTt] [-b bits] [-C connection_spec] [-c host_cert_file]
[-f config_file] [-g login_grace_time] [-h host_key_file]
[-k key_gen_time] [-o option] [-p port] [-u len]
root@xx:/etc/nginx/sites-enabled#
Что я делаю не так?
решение1
В sshd_config
руководстве указано, что
Должен
ChrootDirectory
содержать необходимые файлы и каталоги для поддержки сеанса пользователя. Для интерактивного сеанса требуется как минимум оболочка, обычноsh(1)
, и базовые/dev
узлы, такие какnull(4)
,zero(4)
,stdin(4)
,stdout(4)
,stderr(4)
, иtty(4)
устройства. Для сеансов передачи файлов с использованием SFTP дополнительная настройка среды не требуется, если используется внутрипроцессный sftp-сервер, хотя сеансы, использующие ведение журнала, могут потребовать/dev/log
внутри каталога chroot в некоторых операционных системах (см.sftp-server(8)
подробности).
Вам следует создать dev
каталог, а затем скопировать /dev/MAKEDEV
туда скрипт. Используя скрипт, создайте необходимые файлы устройств.
Для интерактивных пользователей вам также необходимо установить необходимые двоичные файлы и связанные библиотеки в chroot.
Ссылка на «внутрипроцессный sftp-сервер» означает, что ForceCommand internal-sftp
его следует использовать в вашем Match
блоке.
Примечание: отрывок взят из OpenSSH 7.5, поскольку у меня нет доступа к более старым реализациям SSH.