Chroot ssh пользователя в домашнюю папку приводит к отказу в подключении

Chroot ssh пользователя в домашнюю папку приводит к отказу в подключении

Я пытаюсь дать кому-то доступ по ssh к серверу (Ubuntu 14.04), который у меня есть, но я хочу ограничить их доступ к их собственной домашней папке. Поэтому я пытаюсь следоватьэтот урок.

Сначала я создал пользователя ( sudo adduser jailuser), что позволило войти в систему с помощью jailuser. Затем, приступая к попытке посадить пользователя в тюрьму, я добавил следующее /etc/ssh/sshd_config(и перезапустил ssh):

Subsystem     sftp   internal-sftp
Match Group sftp
    ChrootDirectory %h
    ForceCommand internal-sftp
    AllowTcpForwarding no

Затем я создал группу sftp:

sudo groupadd sftp

и выполнил следующие команды для смены пользователя jail:

sudo usermod -G sftp jailuser
sudo usermod -s /bin/false jailuser
sudo chown root:root /home/jailuser
sudo chmod 0755 /home/jailuser

В результате я больше не могу войти в систему: ssh: connect to host xx.xxx.xx.223 port 22: Connection refused.

Так как я новичок в управлении сервером, я здесь запутался. Кто-нибудь знает, что я делаю не так? Все советы/рекомендации приветствуются!

решение1

У меня была эта проблема, и исправление было в том, чтобы поместить "UsePAM yes" над строфой "Subsystem sftp internal-sftp". Перезапустите ssh, и все заработало.

решение2

Я не вижу ничего явно неправильного в sshd_configстроках, которые вы разместили. Кажется, здесь есть три возможности:

  1. На самом деле все в порядке, но sshdнужно начать.
  2. sshdможет работать, но не прослушивает нужный IP-адрес или порт.
  3. Что-то мешает sshdзапуску.

Для всего нижеперечисленного вам необходимо находиться rootна хосте SSH-сервера.

Для (1) выполните что-то вроде "ps -fe | grep sshd", чтобы увидеть, sshdзапущено или нет. Если нет, попробуйте запустить сервер ssh. В Ubuntu выполните это:

/etc/init.d/ssh restart

Если sshdработает, перейдите к (2). Проверьте sshd_configналичиеПрослушатьАдресилиПортдирективы. Они контролируют, какой IP-адрес и порт сервер будет прослушивать на предмет подключений. В большинстве случаев вы бы оставили их закомментированными (чтобы использовать значения по умолчанию) или установили бы их на 0.0.0.0 и 22 соответственно.

Если вы попытались запуститься sshd, но он не запускается, начните с проверки файлов журнала /var/logна наличие сообщений от sshd. Они могут указать на проблему, с которой он столкнулся. Если это не сработает, вы можете запустить sshdинтерактивно с отладкой:

/usr/sbin/sshd -ddd            # Listen on the default port 22
/usr/sbin/sshd -ddd -p 1022    # Listen on port 1022

sshdостанется подключенным к вашему терминалу и выведет кучу отладочной информации. Если он не может продолжать работать по какой-то причине, он должен сообщить вам, почему.

Связанный контент