Пользователи chroot ssh в домашнюю директорию

Как можно использовать chroot ssh в своих домашних каталогах?

Это то, что я установил в файле sshd_config:

ChrootDirectory %h Subsystem sftp /usr/libexec/openssh/sftp-server 

Версия ssh – 6.6.1

Это ошибка, которую я получаю при попытке войти в систему:

 Could not chdir to home directory /home/user: No such file or directory /bin/bash: no such file or directory 

Если вы хотите, чтобы chroot ваших пользователей в свои каталоги, вам нужно иметь оболочку и другие вещи, которые они должны будут выполнять в своих каталогах. Это то, о чем говорит ваша ошибка. Chroot меняет корень на / home / user, а затем пытается найти / bin / bash (выбор оболочки пользователя) в / home / user / bin / bash, не удается и сообщает об ошибке.

Первое сообщение об ошибке («Не удалось chdir …») поступает из ChrootDirectory в ваш sshd_config . Из документации:

ChrootDirectory

Указывает путь к каталогу chroot(2) после аутентификации. Все компоненты пути должны быть корневыми каталогами, которые не могут быть записаны другим пользователем или группой. После chroot sshd(8) изменяет рабочий каталог в домашний каталог пользователя.

После попытки chroot возникает проблема, связанная с невозможностью найти bash . Это связано с отсутствием всей настройки окружения chroot (см. Документацию для chroot(2) ).

Если вы хотите, чтобы интерактивная среда пользователя была chroot 'd (а не только sftp ), вам нужно много работать. В зависимости от вашей конечной цели вы можете просто использовать ограниченную оболочку (проверьте bash(1) и vim(1) и найдите «ограниченный», чтобы найти некоторые идеи о том, как настроить вещи).

Я нашел пару других ссылок на похожие вопросы на askubuntu.com и на archlinux.org (не забудьте прокрутить ко дню второй, чтобы описать, почему каталог должен быть владельцем root).