Результаты Chroot SSH пользователя в домашнюю папку в соединении отказано

2310
kramer65

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

Сначала я создал user ( 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 

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

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
«Отказ в соединении» означает, что служба SSH вообще не отвечает. Проверьте ваш журнал на наличие сообщений об ошибках. Daniel B 9 лет назад 1
«Отказ в соединении» на самом деле означает, что `ssh` вообще не * работает *. Antonis Christofides 9 лет назад 1
@DanielB Кажется, вы правы. С изменениями в `/ etc / ssh / sshd_config` ssh перезагружается неправильно. Но я скопировал его точно из учебника, которому следовал. Есть идеи, что я там делаю не так? kramer65 9 лет назад 0
Стоит отметить, что, установив для своей оболочки значение / bin / false, они не смогут войти через SSH или локально в настоящую оболочку. Учебное пособие, которое вы используете, предназначено для ограничения доступа SFTP к определенному каталогу, для пользователя, который в противном случае НЕ имеет доступа к оболочке. Если это то, что вы пытаетесь сделать, это нормально ... но не совсем ясно, так это или нет. 0xDAFACADE 9 лет назад 1

2 ответа на вопрос

2
user104318

У меня была эта проблема, и исправление заключалось в том, чтобы разместить «UsePAM yes» над разделом «Подсистема sftp internal-sftp». Перезапустите SSH, и все заработало.

1
Kenster

Я не вижу ничего явно неправильного в 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для ListenAddress или порта директив. Они определяют, какой 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останется подключенным к вашему терминалу и распечатает кучу отладочной информации. Если он не может продолжать работать по какой-то причине, он должен сказать вам, почему.