Connessione SSH: ssh_exchange_identifcation


9

Mi collego a un server remoto tramite il mio Mac ormai da circa un mese. Di recente, ho provato a connettermi usando ssh dylan @ MY_IP e ho ricevuto questo messaggio.

ssh_exchange_identification: read: Connection reset by peer

Ho anche ricevuto alcune informazioni diagnostiche ...

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

Dopo aver fatto qualche ricerca, ho provato il seguente ...

  1. Riavviato il mio router
  2. Cancella il mio file "known_hosts"
  3. Eliminato il mio file "known_hosts"
  4. Rilasciato e rinnovato il mio DHCP
  5. Ho anche provato da un altro dispositivo (Windows) a utilizzare Putty con un errore

Si noti che non ho apportato modifiche al server per inibire questa comunicazione.

Inoltre, non sono sicuro che ciò possa causare problemi, ma mi sono connesso ad esso tramite il suo nome di dominio e il suo IP.

Inoltre, sono stato in grado di connettermi con successo da un altro indirizzo IP.

So che questo è un grosso problema con molte risorse là fuori, ma molte soluzioni non hanno funzionato né ho visto alcun tipo di risoluzione per nessuno.

Aggiornare

L'ho forzato al protocollo 1. Invece di "Connessione ripristinata dal peer", ora ottengo "Connessione chiusa dall'host remoto". Eseguendolo con le informazioni di debug ha rivelato:

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

Usi l'autenticazione con chiave pubblica? Hai qualche chiave di accesso /Users/watson/.ssh/id_dsa? Prova a eseguire il backup del file e rimuoverlo.
pabouk,

Non uso l'autenticazione con chiave pubblica; tuttavia, esiste una singola chiave nel file. Ho provato a rimuovere il file, ma non è stato apportato alcun cambiamento durante l'esecuzione del comando.
Dylan,

se si tratta di un problema con la versione del protocollo, è possibile forzare la connessione con la versione del protocollo 1 conssh -1 ...
wkaha,

Fare riferimento alla nuova modifica sul post.
Dylan,

Risposte:


4

Ecco come ho risolto l'errore "ssh_exchange_identification: connessione chiusa dall'host remoto" durante la connessione a un server SSH.

Ho riscontrato questo errore durante il tentativo di connettersi a una macchina Linux incorporata, dopo aver decompresso un pacchetto su root. Molti file di libreria sono stati sostituiti, incluso libssl.

Prova di connettersi:

chetic@ubuntu:~$ ssh -v root@192.168.1.100
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

Google sembrava solo suggerire di controllare hosts.deny e hosts.allow, ma il mio computer di destinazione non aveva tali file.

Dopo un riavvio (secondo il suggerimento di Karthik) sshd non era in esecuzione. Ho provato a avviare manualmente sshd sul target:

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

Ho sostituito /usr/lib/libssl.a con la versione originale e ho iniziato sshd e le cose sono tornate alla normalità. Nel mio caso il problema era causato da una versione errata del pacchetto che avevo originariamente decompresso su root.


3

Stavo ottenendo lo stesso errore (ma da qualsiasi macchina, inclusa la macchina problematica tramite ssh localhost).

È iniziato quando ho migrato un profilo utente; cioè dopo aver copiato i file come root, poi ha fatto comandi similichown -R username /Users/username/Destop

comunque, non sono sicuro del perché il proprietario / var / empty sia stato cambiato in username, ma sshsicuramente deve /var/emptyessere di proprietà di root (altrimenti si ottiene ssh_exchange_identification: read: Connection reset by peer):

    sudo chown root /var/empty

Grazie! La modifica del proprietario di /var/emptyrisolto il problema per me.
Yevhen Pavliuk,

1

Questo non è un problema con il tuo computer locale, ma un problema sul lato server. Potrebbero esserci più fattori che causano questo problema:

  1. Modifiche nella configurazione /etc/hosts.allow o /etc/hosts.deny sul server remoto.
  2. Carico carico del server.

In passato, quando ho avuto questi problemi, ho fatto una delle due cose, nel seguente ordine:

  1. Modifica /etc/hosts.allow come indicato nell'articolo precedente. (e riavvia il server SSH)
  2. Se /etc/hosts.allow è già come deve essere, riavvia il server SSH (e fai attenzione quando lo fai!)
  3. Se il riavvio non funziona, rigenerare le chiavi del server e riavviare il server SSH (questo è rischioso, poiché ogni utente che accede a questa macchina riceverà un errore sul server che ha cambiato le chiavi)

Più spesso, 1 risolve il problema, ma ho dovuto fare 2 in alcuni casi .. Non sono stato in grado di capire perché sia così, solo che ha funzionato. Forse ha qualcosa a che fare con il modo in cui viene presentata la chiave, o forse è stato corrotto in qualche modo - non ne sono sicuro. Ma quello che so è che l'errore è interamente legato al server e al modo in cui si verifica l'handshake quando la connessione SSH viene impostata.


1

Ho installato SSH con Cygwin e nel mio caso è stato il firewall di Windows a causare esattamente questo errore, quindi assicurati di consentire le connessioni alla porta 22.


0

Sono riuscito a risolvere questo problema da solo molto facilmente.

Nel normale OS X puoi risolverlo semplicemente selezionando "Accesso remoto" in Preferenze di sistema / Condivisione.

Tuttavia, se si tratta di un server senza testa (come nel mio caso) è possibile utilizzare l'app OSX Server per accedere a (nome del server) / Impostazioni e attivare e disattivare "Connessioni shell protette"


1
Ho anche notato che il modo in cui è possibile aggirare il problema, ma non lo risolve: disabilitare l'accesso remoto influisce gravemente sul sistema e dover attivare l'accesso remoto ogni volta che si desidera ssh in un luogo specifico non è una soluzione praticabile .
Ant6n,

Sì, questo è ancora un problema orribile che ho. Ho appena creato uno script cron cron che riavvia il servizio ogni mezzanotte.
Sirene,

0

Se si utilizza una chiave privata o una chiave di sicurezza per accedere al server, è necessario modificare l'autorizzazione per il file chiave in 660, utilizzando il comando

sudo chmod 660 Nome_file


1
(1) Anche se questa può essere la causa del sshmancato funzionamento, non è chiaro come questo problema possa causare un sistema funzionante in modo casuale. (2) Questa risposta, così com'è, sarebbe più utile se hai identificato il file di cui stai parlando o fornito istruzioni per consentire a un utente di identificarlo. (3) Immagino che tu stia parlando di un file nella (sotto) directory home dell'utente. In tal caso, sudonon dovrebbe essere necessario.
Scott,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.