Połączenie SSH: ssh_exchange_identifcation

9

Od około miesiąca łączę się ze zdalnym serwerem za pośrednictwem komputera Mac. Jednak od niedawna próbowałem połączyć się za pomocą ssh dylan @ MY_IP i otrzymałem tę wiadomość.

ssh_exchange_identification: read: Connection reset by peer

Mam też informacje diagnostyczne ...

debug1: Reading configuration data /etc/ssh_config
debug1: /etc/ssh_config line 20: Applying options for *
debug1: /etc/ssh_config line 53: Applying options for *
debug2: ssh_connect: needpriv 0
debug1: Connecting to {MY IP{ [MY IP] port 22.
debug1: Connection established.
debug1: identity file /Users/watson/.ssh/id_rsa type -1
debug1: identity file /Users/watson/.ssh/id_rsa-cert type -1
debug3: Incorrect RSA1 identifier
debug3: Could not load "/Users/watson/.ssh/id_dsa" as a RSA1 public key
debug1: identity file /Users/watson/.ssh/id_dsa type 2
debug1: identity file /Users/watson/.ssh/id_dsa-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.2

Po przeprowadzeniu badań wypróbowałem następujące ...

  1. Uruchomiłem ponownie router
  2. Wyczyściłem mój plik „znane_hosty”
  3. Usunięto mój plik „znane_hosty”
  4. Wydałem i odnowiłem mój DHCP
  5. Próbowałem też z innego urządzenia (Windows) przy użyciu Putty z błędem

Pamiętaj, że nie wprowadziłem żadnych zmian na serwerze, aby zablokować tę komunikację.

Nie jestem też pewien, czy to spowodowałoby problemy, ale podłączyłem się do niego zarówno przez nazwę domeny, jak i adres IP.

Ponadto udało mi się pomyślnie połączyć z innego adresu IP.

Wiem, że jest to duży problem z wieloma zasobami, ale wiele rozwiązań nie zadziałało, ani też nie widziałem żadnej rozdzielczości dla nikogo.

Aktualizacja

Zmusiłem go do protokołu 1. Zamiast „Resetowania połączenia przez peera”, teraz otrzymuję „Połączenie zamknięte przez hosta zdalnego”. Uruchomienie go z ujawnionymi informacjami debugowania:

debug1: Reading configuration data /etc/ssh_config
debug1: /etc/ssh_config line 20: Applying options for *
debug1: /etc/ssh_config line 53: Applying options for *
debug2: ssh_connect: needpriv 0
debug1: Connecting to MY_IP [MY_IP] port 22.
debug1: Connection established.
debug1: identity file /Users/watson/.ssh/identity type -1
debug1: identity file /Users/watson/.ssh/identity-cert type -1
ssh_exchange_identification: Connection closed by remote host
Dylan
źródło
Czy korzystasz z uwierzytelniania za pomocą klucza publicznego? Czy masz jakiś klucz /Users/watson/.ssh/id_dsa? Spróbuj wykonać kopię zapasową pliku i usunąć go.
pabouk,
Nie używam uwierzytelniania za pomocą klucza publicznego; w pliku jest jednak jeden klucz. Próbowałem usunąć plik, ale polecenie nie uległo zmianie.
Dylan,
jeśli jest to problem z wersją protokołu, możesz wymusić połączenie z wersją protokołu 1 za pomocąssh -1 ...
wkaha
Zobacz nową edycję w poście.
Dylan,

Odpowiedzi:

4

W ten sposób rozwiązałem błąd „ssh_exchange_identification: Połączenie zamknięte przez zdalny host” podczas łączenia się z serwerem SSH.

Wystąpił ten błąd podczas próby połączenia z wbudowanym komputerem z systemem Linux po rozpakowaniu pakietu do rootowania. Wiele plików biblioteki zostało zastąpionych, w tym libssl.

Próbować połączyć:

chetic@ubuntu:~$ ssh -v [email protected]
OpenSSH_6.2p2 Ubuntu-6ubuntu0.3, 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 SC [192.168.1.100] port 22.
debug1: Connection established.
debug1: identity file /home/delaval/.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/delaval/.ssh/id_rsa-cert type -1
debug1: identity file /home/delaval/.ssh/id_dsa type -1
debug1: identity file /home/delaval/.ssh/id_dsa-cert type -1
debug1: identity file /home/delaval/.ssh/id_ecdsa type -1
debug1: identity file /home/delaval/.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.3
ssh_exchange_identification: read: Connection reset by peer

Googling wydawał się sugerować tylko sprawdzenie hosts.deny i hosts.allow, ale mój komputer docelowy nie miał takich plików.

Po ponownym uruchomieniu (zgodnie z sugestią Karthika) sshd nie działał. Próbowałem ręcznie uruchomić sshd na celu:

# sshd
OpenSSL version mismatch. Built against 1000002f, you have 1000105f

Zastąpiłem /usr/lib/libssl.a oryginalną wersją i uruchomiłem sshd i wszystko wróciło do normy. Problem był w moim przypadku spowodowany niepoprawną wersją pakietu, który pierwotnie rozpakowałem do roota.

Chetic
źródło
3

Otrzymywałem ten sam błąd (ale z dowolnej maszyny, w tym z kłopotliwej maszyny przez ssh localhost).

Zaczęło się, gdy przeprowadziłem migrację profilu użytkownika; tj. po skopiowaniu plików jako root, a następnie polecenia jakchown -R username /Users/username/Destop

tak czy inaczej, całkowicie nie wiem, dlaczego / var / empty owner został zmieniony na nazwę użytkownika, ale sshzdecydowanie musi /var/emptybyć własnością root (w przeciwnym razie otrzymasz ssh_exchange_identification: read: Connection reset by peer):

    sudo chown root /var/empty
hunter3740
źródło
Dzięki! Zmiana właściciela /var/emptynaprawiła dla mnie problem.
Jewhen Pavliuk
1

To nie jest problem z lokalną maszyną, ale problem po stronie serwera. Przyczyną tego problemu może być wiele czynników :

  1. Zmiany w konfiguracji /etc/hosts.allow lub /etc/hosts.deny na zdalnym serwerze.
  2. Duże obciążenie serwera.

W przeszłości, kiedy miałem te problemy, robiłem jedną z dwóch rzeczy, w następującej kolejności:

  1. Zmodyfikuj plik /etc/hosts.allow zgodnie z powyższym artykułem. (i zrestartuj serwer SSH)
  2. Jeśli /etc/hosts.allow jest już taki, jaki jest wymagany, po prostu zrestartuj serwer SSH (i zachowaj ostrożność, gdy to robisz!)
  3. Jeśli ponowne uruchomienie nie działa, ponownie wygeneruj klucze serwera i zrestartuj serwer SSH (jest to ryzykowne, ponieważ każdy użytkownik logujący się na tym komputerze otrzyma błąd dotyczący zmiany kluczy na serwerze)

Najczęściej 1 rozwiązuje problem, ale w niektórych przypadkach musiałem zrobić 2. Nie byłem w stanie zrozumieć, dlaczego tak jest, tylko że zadziałało. Być może ma to coś wspólnego ze sposobem, w jaki klucz jest prezentowany, a może w jakiś sposób został uszkodzony - nie jestem pewien. Ale wiem, że błąd jest całkowicie związany z serwerem i sposobem, w jaki uścisk dłoni zdarza się, gdy połączenie SSH jest ustawiane uo.

Karthik Rangarajan
źródło
1

Miałem SSH skonfigurowane z Cygwin, aw moim przypadku to właśnie zapora systemu Windows spowodowała właśnie ten błąd, więc upewnij się, że zezwalasz na połączenia z portem 22.

anonimowy
źródło
0

Naprawdę łatwo udało mi się rozwiązać ten problem.

W normalnym systemie OS X możesz rozwiązać ten problem, po prostu przełączając opcję „Zdalne logowanie” w Preferencjach systemowych / Udostępnianiu.

Jeśli jednak jest to serwer bezgłowy (jak w moim przypadku), możesz użyć aplikacji OSX Server, aby przejść do (nazwa twojego serwera) / Ustawień i przełączyć „Bezpieczne połączenia powłoki ponownie”

Syreny
źródło
1
Zauważyłem również, jak możesz obejść ten problem, ale to nie rozwiązuje problemu: wyłączenie zdalnego logowania poważnie wpływa na system, a konieczność przełączania zdalnego logowania za każdym razem, gdy chce się ssh w określonym miejscu, nie jest realnym rozwiązaniem .
Ant6n
Tak, to wciąż okropny problem. Właśnie utworzyłem skrypt root crona, który restartuje usługę co północ.
Syreny
0

Jeśli używasz klucza prywatnego lub klucza bezpieczeństwa do logowania się na serwerze, musisz zmienić uprawnienia do pliku klucza na 660, używając polecenia

sudo chmod 660 nazwa_pliku

Srijan Chaudhary
źródło
1
(1) Chociaż może to być przyczyną sshniedziałania, nie jest jasne, w jaki sposób ten problem losowo spowodowałby działający system. (2) Taka odpowiedź, taka jaka jest, byłaby bardziej przydatna, gdybyś zidentyfikował plik, o którym mówisz, lub dostarczył instrukcje pozwalające użytkownikowi go zidentyfikować. (3) Myślę, że mówisz o pliku w (pod) katalogu domowym użytkownika. W takim przypadku sudonie powinno być to konieczne.
Scott