Назад | Перейти на главную страницу

Проблема клиента ssh: сброс подключения одноранговым узлом

У меня действительно неприятная проблема на моем ноутбуке с Ubuntu.

Я заметил это сегодня, после обновления до Ubuntu 11.04, хотя я не совсем уверен, что это причина, поскольку несколько дней назад я играл со своими ключами ssh.

Проблема в том, что всякий раз, когда я пытаюсь установить ssh на ЛЮБОЙ хост, я получаю следующую ошибку:

Read from socket failed: Connection reset by peer

запуск с -vvv дает следующий результат:

OpenSSH_5.8p1 Debian-1ubuntu3, OpenSSL 0.9.8o 01 Jun 2010
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Applying options for *
debug2: ssh_connect: needpriv 0
debug1: Connecting to hostname [10.0.0.2] port 22.
debug1: Connection established.
debug1: permanently_set_uid: 0/0
debug1: identity file /root/.ssh/id_rsa type -1
debug1: identity file /root/.ssh/id_rsa-cert type -1
debug1: identity file /root/.ssh/id_dsa type -1
debug1: identity file /root/.ssh/id_dsa-cert type -1
debug1: identity file /root/.ssh/id_ecdsa type -1
debug1: identity file /root/.ssh/id_ecdsa-cert type -1
debug1: Remote protocol version 1.99, remote software version OpenSSH_4.2
debug1: match: OpenSSH_4.2 pat OpenSSH_4*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_5.8p1 Debian-1ubuntu3
debug2: fd 3 setting O_NONBLOCK
debug3: load_hostkeys: loading entries for host "hostname" from file "/root/.ssh/known_hosts"
debug3: load_hostkeys: loaded 0 keys
debug1: SSH2_MSG_KEXINIT sent
Read from socket failed: Connection reset by peer

Мой / etc / ssh / ssh_config:

Host *
    SendEnv LANG LC_*
    HashKnownHosts yes
    GSSAPIAuthentication no
    GSSAPIDelegateCredentials no

Я могу подключиться к своему ноутбуку с любого другого сервера через ssh, а также могу успешно использовать ssh localhost со своего ноутбука.

Я могу подключиться ко всем этим другим серверам с других ноутбуков, и я не вижу ничего в журналах других серверов относительно моей неудачной попытки.

Пытался остановить iptables, не помогло.

Я попробовал несколько уловок, которые мог найти в Интернете с помощью моего / etc / ssh / ssh_config, но мне не удалось решить проблему ...

Любые идеи?


Изменить: это журнал одного из хостов, к которому я пытаюсь подключиться:

May  1 19:15:23 localhost sshd[2845]: debug1: Forked child 2847.
May  1 19:15:23 localhost sshd[2845]: debug3: send_rexec_state: entering fd = 8 config len 577
May  1 19:15:23 localhost sshd[2845]: debug3: ssh_msg_send: type 0
May  1 19:15:23 localhost sshd[2845]: debug3: send_rexec_state: done
May  1 19:15:23 localhost sshd[2847]: debug1: rexec start in 5 out 5 newsock 5 pipe 7 sock 8
May  1 19:15:23 localhost sshd[2847]: debug1: inetd sockets after dupping: 3, 3
May  1 19:15:23 localhost sshd[2847]: Connection from 10.0.0.7 port 55747
May  1 19:15:23 localhost sshd[2847]: debug1: Client protocol version 2.0; client software version OpenSSH_5.8p1 Debian-1ubuntu3
May  1 19:15:23 localhost sshd[2847]: debug1: match: OpenSSH_5.8p1 Debian-1ubuntu3 pat OpenSSH*
May  1 19:15:23 localhost sshd[2847]: debug1: Enabling compatibility mode for protocol 2.0
May  1 19:15:23 localhost sshd[2847]: debug1: Local version string SSH-2.0-OpenSSH_5.3
May  1 19:15:23 localhost sshd[2847]: debug2: fd 3 setting O_NONBLOCK
May  1 19:15:23 localhost sshd[2847]: debug2: Network child is on pid 2848
May  1 19:15:23 localhost sshd[2847]: debug3: preauth child monitor started
May  1 19:15:23 localhost sshd[2847]: debug3: mm_request_receive entering
May  1 19:15:23 localhost sshd[2848]: debug3: privsep user:group 74:74
May  1 19:15:23 localhost sshd[2848]: debug1: permanently_set_uid: 74/74
May  1 19:15:23 localhost sshd[2848]: debug1: list_hostkey_types: ssh-rsa,ssh-dss
May  1 19:15:23 localhost sshd[2848]: debug1: SSH2_MSG_KEXINIT sent
May  1 19:15:23 localhost sshd[2848]: debug3: Wrote 784 bytes for a total of 805
May  1 19:15:23 localhost sshd[2848]: fatal: Read from socket failed: Connection reset by peer

Это сложно отладить в openssh, похоже, это происходит только от определенных клиентов к конкретным серверам.

  1. Причина? Я не дошел до основной причины. Мой лучший вывод заключается в том, что пакеты подключения слишком велики для сервера, и соединение сбрасывается.

  2. Обходные пути: ограничьте размер пакета. Две альтернативы:

    • Ограничьте длину списка шифров с помощью '-c' в командной строке ssh, например '-c aes256-ctr'
    • Ограничьте список HostKeyAlgorithms, добавив в ~ / .ssh / config:

      HostKeyAlgorithms ssh-rsa-cert-v01 @ openssh.com, ssh-dss-cert-v01 @ openssh.com, ssh-rsa-cert-v00 @ openssh.com, ssh-dss-cert-v00 @ openssh.com, ecdsa -sha2-nistp256, ecdsa-sha2-nistp384, ecdsa-sha2-nistp521, ssh-rsa, ssh-dss

  3. URL:

  4. Затронутые версии: AFAIK это началось с 5.7p1. Переход на 5.5p1 решает проблему. Однако на машинах, у которых нет этой проблемы, 5.7p1, 5.8p1 работают отлично. Таким образом, я предполагаю, что это связано с невинным вызовом библиотеки, который был добавлен на 5.7p1 в стороннюю библиотеку, которая не работает только в определенных средах. Безумное предположение к безумному багу.

Это сработало для меня:

Мой /etc/ssh/ssh_config:

Host *

SendEnv LANG LC_*

HashKnownHosts yes

GSSAPIAuthentication yes

GSSAPIDelegateCredentials no

Ciphers aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc

Это связано с тем, что пакеты подключения слишком велики для обработки сервером, и соединение сбрасывается. Вы можете поместить конфигурацию Chippers в /etc/ssh/ssh_config ... так что просто попробуйте с ssh -l username hotname нет необходимости в -c aes256-ctr больше.

Я обнаружил, что эта ошибка возникает, когда я был на определенном Wi-Fi-соединении. Когда я перешел на другой Wi-Fi, ошибка исчезла. Странно, но реально: - /