Problemi SSH: lettura dal socket non riuscita: connessione reimpostata dal peer


14

Ho compilato OpenSSH_6.6p1 su uno dei nostri server. Sono in grado di accedere tramite SSH al server aggiornato. Ma non sono in grado di connettermi ad altri server che eseguono OpenSSH_6.6p1 o OpenSSH_5.8 da questo. Durante la connessione ricevo un errore come di seguito.

Read from socket failed: Connection reset by peer

Sul server di destinazione nei registri, lo vedo come di seguito.

sshd: fatal: Read from socket failed: Connection reset by peer [preauth]

Ho provato a specificare il cipher_spec [ssh -c aes128-ctr destination-server] come indicato qui e sono stato in grado di connettermi. Come può configurare ssh per usare la cifratura di default? Perché la cifra è richiesta qui?


Dal server da cui ricevi questo errore, cosa succede quando lo fai telnet ip.or.name.of.offending.server 22?
MadHatter,

1
Entrambe le parti sembrano pensare che l'altra parte abbia chiuso la connessione. A questo punto vorrei scoppiare tcpdump o WireShark ed eseguirlo su entrambe le estremità.
Michael Hampton

@MadHatter Sono in grado di telnet sulla porta 22 e ottenere la risposta SSH.
nitine

Prova a compilare versioni precedenti di openssh come 6.5p1 per vedere se questo comportamento è dovuto a una modifica della base di codice?

Risposte:


7

Il problema sembra un bug sul lato server. Quando il client invia l'elenco di cifre, il server openssh probabilmente si aspetta di essere in grado di leggere l'elenco in una singola chiamata di sistema.

Se l'elenco di cifre supportate è più lungo di quanto possa essere trasmesso in un pacchetto, il server potrebbe ottenere meno byte nella prima chiamata di quanto previsto. Il comportamento corretto sul server sarebbe quello di eseguire un'altra chiamata per ottenere il resto dei byte. Ma dalla descrizione del problema appare, il server chiude invece la connessione quando non ha ottenuto l'elenco completo di cifre in una volta. Quando arriva il pacchetto successivo dal client, il server invierà una reimpostazione della connessione al client.

La configurazione del client per l'utilizzo di un elenco più breve di cifre quindi aggirerebbe il bug. Il client openssh cercherà l'elenco delle cifre nei seguenti luoghi:

  1. Sulla riga di comando usando -c cipher_spec o -o Ciphers = cipher_spec
  2. In ~ / .ssh / config specificando Ciphers cipher_spec nella relativa sezione host o prima del primo host.
  3. In / etc / ssh / ssh_config usando lo stesso formato di ~ / .ssh / config
  4. Un elenco predefinito incorporato nel client al momento della compilazione.

I due file di configurazione sono rispettivamente impostazioni per utente e per tutto il sistema. L'uso Ciphers aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbccome suggerito da Eric dovrebbe funzionare bene.


È questo un difetto noto in quella versione di openssh? qualcuno ha un link al bug tracker di openssh per questo problema?
user313114

1
@ user313114 Non ho cercato un tale tracker perché credo che il bug fosse già stato risolto nelle versioni più recenti tre anni fa quando questa risposta è stata scritta.
Kasperd,

4

È possibile specificare la crittografia nel file di configurazione ssh (/ etc / ssh / ssh_config o simile, dipende da $ PREFIX ecc.). Qualsiasi opzione che passi al client ssh dalla riga di comando può essere impostata nel file di configurazione ssh (client).

Ecco la riga pertinente (solo decomment):

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

3

Il mio modo di risolverlo, spero che aiuti qualcuno:

# Recreate host keys
sudo rm /etc/ssh/ssh_host_*
sudo ssh-keygen -A

# Re-install SSh
sudo apt-get --reinstall install openssh-server openssh-client

Modifica sshd_config aggiungendo un valore

add :  MaxAuthTries 3

Modifica ssh_config decommentando un valore

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

0

Risolto il problema modificando le autorizzazioni dei file seguenti a 600.

/ etc / ssh / ssh_host_dsa_key
/ etc / ssh / ssh_host_rsa_key
/ etc / ssh / ssh_host_ecdsa_key

Modificato anche il permesso per tutti gli altri file all'interno di '/ etc / ssh /' su 644. Tutti i file devono essere di proprietà di 'root'.

Di seguito è riportato il set completo di comandi per assegnare le autorizzazioni appropriate per tutti i file nella directory '/ etc / ssh':

chown root: root / etc / ssh / * chmod 644 / etc / ssh / *
chmod 600 / etc / ssh / ssh_host_dsa_key
chmod 600 / etc / ssh / ssh_host_rsa_key
chmod 600 / etc / ssh / ssh_host_ecdsa_key


-1

Il mio problema che presentava gli stessi identici sintomi che stai vedendo era dovuto a chiavi host troncate. Prova a ricrearli con:

sudo rm /etc/ssh/ssh_host_*
sudo ssh-keygen -A
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.