
С сегодняшнего утра я получаю следующее сообщение об ошибке при попытке подключения к моему пульту дистанционного управленияUbuntu 14.04 LTSмашина через ssh
изMacBook Air Йосемити 10.10.1.
ssh_exchange_identification: read: Operation timed out
При использовании -vvv
флага появляется следующее подробное сообщение
OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011
debug1: Reading configuration data /etc/ssh_config
debug1: /etc/ssh_config line 20: Applying options for *
debug1: /etc/ssh_config line 102: Applying options for *
debug2: ssh_connect: needpriv 0
debug1: Connecting to XXX.XXX.XXX.XXX [XXX.XXX.XXX.XXX] port 22.
debug1: Connection established.
debug1: identity file /Users/felix/.ssh/id_rsa type -1
debug1: identity file /Users/felix/.ssh/id_rsa-cert type -1
debug1: identity file /Users/felix/.ssh/id_dsa type -1
debug1: identity file /Users/felix/.ssh/id_dsa-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.2
ssh_exchange_identification: read: Operation timed out
В течение многих месяцев это соединение работало отлично. Я никогда не испытывал никаких проблем. Другие решения, такие как найденныездесьиздесьне помогло.
Есть ли какие-нибудь предложения по решению этой проблемы?
решение1
debug1: Local version string SSH-2.0-OpenSSH_6.2
ssh_exchange_identification: read: Operation timed out
Согласно вашему отладочному следу, вам удается подключиться к удаленному серверу SSH, и сервер не разрывает соединение, но сервер не отправляет свою строку идентификации программного обеспечения. Это первое, что делают клиент и сервер, и это делается открытым текстом.
Я думаю, что проблема сведется к одному из трех:
Какое-то сетевое устройство между вами и сервером мешает подключению. Например, если удаленный хост находится за маршрутизатором NAT, переадресация порта 22 может быть настроена неправильно, и вы подключаетесь к неправильной службе.
Программа сервера SSH на удаленном хосте может зависать или работать со сбоями. Я видел, как что-то подобное происходило, например, когда хост был сильно перегружен или имел мало виртуальной памяти. Или сервер мог использовать что-то вродеTCP-обертки, и он выполняет DNS-запрос на IP-адрес вашего клиента, разрешение которого занимает много времени.
Удаленный хост настроен необычным образом, а служба, работающая на порту 22, не является SSH-сервером.
Если вы можете добраться до сервера, сосредоточьте поиск неисправностей там. Найдите журналы сервера ssh — они должны быть там, /var/log
и посмотрите, зарегистрировал ли он что-нибудь об этих неудачных попытках подключения. Попробуйте запустить ssh на localhost с сервера и посмотрите, работает ли это правильно.
Если у вас есть root-доступ к серверу, вы можете попробовать запустить отладочный экземпляр, чтобы sshd
посмотреть, что он регистрирует при подключении вашего клиента. Остановите обычный sshd
сервер и в окне терминала root запустите /path/to/sshd -d
. Это запустит копию sshd, которая примет одно подключение и выведет отладочную информацию в окно терминала. Попробуйте воспроизвести проблему, а затем проверьте, что регистрировал сервер.
Если вы не можете перевести обычный сервер ssh в автономный режим, вы можете запустить sshd на другом порту: /path/to/sshd -p 42 -d
запускает копию sshd, прослушивающую порт 42. Укажите тот же номер порта при запуске клиента ssh: ssh -p 42 user@host
. Если ваши проблемы вызваны мешающим сетевым устройством, это может вести себя иначе, чем подключения к порту 22.