SSH-подключение невозможно в локальной сети

SSH-подключение невозможно в локальной сети

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

У меня в локальной сети есть сервер (работающий под управлением 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
[email protected]'s password: 
[ ... everything works just fine ... ]

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

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

решение1

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

/path/to/sshd -ddd -p 42

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

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

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

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

решение2

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

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

решение3

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

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

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

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

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

Если он может выйти из вашей сети, то вернитесь обратно...

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

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

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