1

Сегодня я понял очень странную вещь:

У меня есть сервер (работает под управлением Ubuntu Server 12.04.4 LTS) в моей локальной сети, чей SSH-порт доступен через Интернет (я могу подключиться к нему с помощью ssh my.internet.ip.address).

Однако только сегодня я понял, что не могу подключиться к нему в локальной сети (ssh its.local.ip.address завершается неудачно без ошибок).

Я проверил /etc/hosts.deny и явно добавил свой компьютер в /etc/hosts.allow , но это ничего не изменило. Конечно, я также попытался перезапустить SSH и весь сервер. Нет новых доступных обновлений.

Локальное соединение не удается:

myself@my-desktop ~ $ ssh -v its.local.ip.address
OpenSSH_6.2p2 Ubuntu-6ubuntu0.4, OpenSSL 1.0.1e 11 Feb 2013
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to its.local.ip.address [its.local.ip.address] port 22.
debug1: Connection established.
debug1: identity file /home/myself/.ssh/id_rsa type -1
debug1: identity file /home/myself/.ssh/id_rsa-cert type -1
debug1: identity file /home/myself/.ssh/id_dsa type -1
debug1: identity file /home/myself/.ssh/id_dsa-cert type -1
debug1: identity file /home/myself/.ssh/id_ecdsa type -1
debug1: identity file /home/myself/.ssh/id_ecdsa-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.2p2 Ubuntu-6ubuntu0.4
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.9p1 Debian-5ubuntu1.4
debug1: match: OpenSSH_5.9p1 Debian-5ubuntu1.4 pat OpenSSH_5*
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-md5 none
debug1: kex: client->server aes128-ctr hmac-md5 none
debug1: sending SSH2_MSG_KEX_ECDH_INIT
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
Connection closed by its.local.ip.address
myself@my-desktop ~ $ 

Однако удаленное соединение работает:

myself@my-desktop ~ $ ssh -v my.internet.ip.address
OpenSSH_6.2p2 Ubuntu-6ubuntu0.4, OpenSSL 1.0.1e 11 Feb 2013
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to my.internet.ip.address [my.internet.ip.address] port 22.
debug1: Connection established.
debug1: identity file /home/myself/.ssh/id_rsa type -1
debug1: identity file /home/myself/.ssh/id_rsa-cert type -1
debug1: identity file /home/myself/.ssh/id_dsa type -1
debug1: identity file /home/myself/.ssh/id_dsa-cert type -1
debug1: identity file /home/myself/.ssh/id_ecdsa type -1
debug1: identity file /home/myself/.ssh/id_ecdsa-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.2p2 Ubuntu-6ubuntu0.4
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.9p1 Debian-5ubuntu1.4
debug1: match: OpenSSH_5.9p1 Debian-5ubuntu1.4 pat OpenSSH_5*
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-md5 none
debug1: kex: client->server aes128-ctr hmac-md5 none
debug1: sending SSH2_MSG_KEX_ECDH_INIT
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug1: Server host key: ECDSA [... hidden here ...]
debug1: Host 'my.internet.ip.address' is known and matches the ECDSA host key.
debug1: Found key in /home/myself/.ssh/known_hosts:4
debug1: ssh_ecdsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: password
debug1: Next authentication method: password
myself@my.internet.ip.address's password: 
[ ... everything works just fine ... ]

Что может быть причиной этой проблемы и, что более важно, как я могу ее решить?

Примечание: увеличение детализации (ssh -vvv) ничего не показывает дополнительно в точке, где оба выхода отклоняются.

3 ответа3

1

Сервер решает разорвать соединение, поэтому вам придется отладить проблему со стороны сервера. Если у вас есть "root" доступ на сервере, вы можете запустить sshd интерактивном режиме:

/path/to/sshd -ddd -p 42

Это запустит копию прослушивания sshd на порту 42 - вы можете указать другое число - в режиме отладки. Он будет работать на переднем плане, принимая одно соединение и печатая отладочную информацию на ваш терминал.

Теперь свяжитесь с вашим клиентом:

ssh -v -p 42 its.local.ip.address

Если повезет, сообщения отладки на стороне сервера должны указывать, почему он прерывает сеанс.

0

Сообщается, что эта ошибка затронула несколько пользователей.

Если локально, попробуйте ssh -X, чтобы отключить переадресацию x.

Кроме того, максимальная единица передачи [MTU] может потребоваться настроить для MTU ssh_server.

** если это не работает в локальном режиме, попробуйте:

 myself@my-desktop ~ $ ssh -v my.internet.ip.address

Если это может пройти через вашу сеть, тогда вернитесь в ...

Это могут быть ошибки конфигурации сервера, проверьте sshd_config для "разрешенных пользователей", а также, где будет храниться known_host, добавьте версию local.ip.address пользователя "себе".

копия sshd может помочь

0

Я предполагаю, что клиентский компьютер одинаков в обоих перехватах (даже если запросы различаются). Поскольку он разрешает соединение TCP, вероятно, это связано с обратным DNS и / или запретом политик в конфигурации sshd.

Попробуйте отключить DNS на стороне сервера (UseDNS = no в sshd_config) и перезапустить sshd (достаточно убить -1)

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