1

Я пытаюсь ssh удаленного сервера с моего локального сервера. Но всякий раз, когда я запускаю команду ssh:

ssh root@x.x.x.x

Я получаю ошибку:

Соединение закрыто хххх

Вывод команды ssh -v -v -v -v root @ xxxx:

OpenSSH_5.9p1 Debian-5ubuntu1.1, OpenSSL 1.0.1 14 Mar 2012
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug2: ssh_connect: needpriv 0
debug1: Connecting to x.x.x.x [x.x.x.x] port 22.
debug1: Connection established.
debug3: Incorrect RSA1 identifier
debug3: Could not load "/home/mona/.ssh/id_rsa" as a RSA1 public key
debug1: identity file /home/mona/.ssh/id_rsa type 1
debug1: Checking blacklist file /usr/share/ssh/blacklist.RSA-2048
debug1: Checking blacklist file /etc/ssh/blacklist.RSA-2048

debug1: identity file /home/mona/.ssh/id_rsa-cert type -1
debug1: identity file /home/mona/.ssh/id_dsa type -1
debug1: identity file /home/mona/.ssh/id_dsa-cert type -1
debug1: identity file /home/mona/.ssh/id_ecdsa type -1
debug1: identity file /home/mona/.ssh/id_ecdsa-cert type -1
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.9p1 Debian-5ubuntu1.1
debug1: match: OpenSSH_5.9p1 Debian-5ubuntu1.1 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_5.9p1 Debian-5ubuntu1.1
debug2: fd 3 setting O_NONBLOCK
debug3: load_hostkeys: loading entries for host "151.236.220.15" from file "/home/mona/.ssh/known_hosts"
debug3: load_hostkeys: loaded 0 keys
debug1: SSH2_MSG_KEXINIT sent
Connection closed by x.x.x.x

Я загрузил содержимое моего id_rsa.pub в ключи known_hosts.

Я не могу войти в систему через ssh.

Кто-нибудь может мне помочь в этом? Будет действительно ценить это.

Спасибо.

4 ответа4

4

После точки Фреда в комментариях (и на самом деле читает сообщение об ошибке), я был неправильно и SSH соединялся. Я оставлю свой оригинальный ответ внизу и дополнительно отвечу на вопрос о невозможности подключения к работающему SSH.

Еще один хороший способ диагностировать проблемы ssh, когда сервер sshd отказывает в соединениях, и если OP правильно, ничего не регистрируется в auth.log или syslog , это запустить его на отдельном порту с включенной отладкой (я выбрал произвольный порт из 44).

/full/path/to/sshd -p 44 -d 

Затем вы можете подключиться к вашему ssh-клиенту и получить дальнейшую отладку проблемы:

ssh -p 44 root@x.x.x.x

Root (как Фред указал в своем ответе) - это пользователь, который потенциально может быть ограничен с помощью опции ssh PermitRootLogin в вашем sshd_config . Кроме того, типы методов аутентификации, используемые вашим sshd_config могут дополнительно ограничить доступ к вашему хосту:

RSAAuthentication
PubkeyAuthentication
RhostsRSAAuthentication
HostbasedAuthentication
ChallengeResponseAuthentication
PasswordAuthentication
KerberosAuthentication
GSSAPIAuthentication

Посмотрите на странице man для sshd_config (man 5 sshd_config) для получения дополнительной информации об этих опциях. Обычно большинство sshds имеют RSAAuthentication , PubkeyAuthentication и иногда PasswordAuthentication . RSAAuthentication специфичен для Protocol 1 и большинство хостов используют Protocol 2 который использует PubkeyAuthentication . Оба полагаются на то, что root имеет файл ключа (обычно находится в /root/.ssh/authorized_keys), но это местоположение может быть переопределено с помощью параметра AuthorizedKeysFile . Похоже, PasswordAuthentication не включена на вашем SSD.

Для аутентификации RSA и Pubkey вам нужна пара ключей. Которые вы сгенерировали, и они живут на вашем клиентском компьютере в /home/mona/.ssh/id_rsa и /home/mona/.ssh/id_rsa.pub . Общественности половина из этих двух файлов (ключ , содержащийся в /home/mona/.ssh/id_rsa.pub) вы должны поместить в файле authorized_key суперпользователя , упомянутом выше.

Оригинальный ответ, в котором говорится о невозможности удаленного подключения к процессу sshd

Это похоже на TCPWrappers или брандмауэр, закрывающий начальное соединение.

Проверьте свои auth.log или syslog в /var/log как они могут дать некоторые подсказки относительно того, что блокирует соединение.

TCPwrappers обычно реализуется через файл /etc/hosts.allow а в некоторых unixes - дополнительный или просто файл /etc/hosts.deny (т.е. без файла hosts.allow).

Записи обычно имеют вид:

<service> : <access list> : <allow|deny>

ИЛИ ЖЕ

<service> : <access list>

в зависимости от типа используемой оболочки TCP. Формат этих файлов обычно можно найти с помощью man-страницы man 5 hosts_access . Возможно, вам придется добавить запись, чтобы разрешить удаленный IP-доступ.

sshd : my.ip.address.here : allow

Большинство дистрибутивов с ядром Linux, как правило, используют iptables в качестве основного брандмауэра, хотя некоторые используют ipchains . (Я знаю, что FreeBSD использует ipfw портированный из NetBSD). Ваш поставщик услуг может также иметь межсетевой экран или маршрутизатор с межсетевым экраном перед вашим сервисом, который блокирует эти запросы. Относительно того, какой брандмауэр использует ваш хост, потребуется некоторое изучение.

Правила брандмауэра iptables могут быть перечислены с помощью команды iptables -nvL (которая должна запускаться от имени пользователя root или через sudo). Цепочка INPUT - это набор правил, используемый для разрешения / запрета входящих соединений вашего хоста. Возможно, вам придется добавить правило, разрешающее входящие SSH-соединения:

iptables -I INPUT -p tcp --dport 22 -j ACCEPT -m comment --comment "Allow SSH connections from all hosts"

Возможно, вы захотите сделать так, чтобы он разрешал соединения только с определенного IP:

iptables -I INPUT -s 10.10.10.10 -p tcp --dport 22 -j ACCEPT -m comment --comment "Allow SSH connections from the 10.10.10.10 host"

Если ваш поставщик услуг заблокирует порт 22, вам, вероятно, потребуется перевести службу на другой порт (порт 2222 довольно популярен) с помощью параметра « Port в файле sshd_config (который обычно находится в /etc/ssh).

1

Случилось и со мной. Вот как я диагностировал и исправил проблему:

Когда я запустил sshd на другом порту (не через "service ssh", а прямо из /usr /sbin), я увидел некоторые предупреждения. Оказывается, я изменил права доступа ко всем файлам в /etc /ssh на g+w, чтобы я мог редактировать их как другого пользователя в корневой группе. Плохой ход. sshd очень внимательно относится к этому и игнорирует файлы ключей rsa, которые доступны не только для кого-либо, кроме root. Я отменил изменение разрешений и смог подключиться снова.

0

Это может быть проблемой с ключом хоста SSH на удаленном сервере. Посмотрите этот вопрос и эту ветку поддержки Apple (не беспокойтесь - это не проблема, связанная с яблоком).

0

Просто чтобы быть уверенным, у вас есть #PermitRootLogin yes с или без # в вашем файле sshd_config? Это нужно для того, чтобы ssh входил в систему как root. И действительно, я бы посоветовал не разрешать root на ssh на ваш сервер (измените строку на PermitRootLogin no если она уже не установлена). Заставьте всех войти в систему как обычная учетная запись, затем su root если им нужны привилегии. Таким образом, вы можете видеть, кто вошел в систему и стал пользователем root, и вы не позволяете всем без входа в систему попытаться угадать ваш пароль root.

Открытый ключ компьютера сервера должен находиться в known_hosts на клиентском компьютере для аутентификации сервера, чтобы вы знали, что вы не подключаетесь к какому-либо мошенническому серверу, выдающему себя за нужный вам сервер. При первом подключении к серверу ssh вам будет предложено утвердить ключ, указанный в known_hosts . После этого аутентификация сервера происходит автоматически.

Вы помещаете открытый ключ вашей учетной записи (из файла .pub) в authorized_keys ключи на сервере. Затем, когда вы подключаетесь к серверу, ваш клиент кодирует сообщение с помощью закрытого ключа и отправляет его на сервер, который использует соответствующий открытый ключ из файла авторизованного ключа для расшифровки сообщения. Если сервер может сделать это, это доказывает, что у клиента есть закрытый ключ, и, следовательно, он авторизован для входа.

Мое чтение данных отладки говорит о том, что сервер не может найти открытый ключ вашей учетной записи. Я бы использовал ssh-copy-id для размещения моего открытого ключа на сервере.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .