SSH-Probleme: Lesen vom Socket fehlgeschlagen: Verbindung von Peer zurückgesetzt

14

Ich habe OpenSSH_6.6p1 auf einem unserer Server kompiliert. Ich kann mich über SSH beim aktualisierten Server anmelden. Ich kann jedoch keine Verbindung zu anderen Servern herstellen, auf denen OpenSSH_6.6p1 oder OpenSSH_5.8 ausgeführt wird. Während des Verbindens erhalte ich einen Fehler wie unten.

Read from socket failed: Connection reset by peer

Auf dem Zielserver in den Protokollen sehe ich es wie folgt.

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

Ich habe versucht, den hier erwähnten cipher_spec [ssh -c aes128-ctr destination-server] anzugeben , und konnte eine Verbindung herstellen. Wie kann ssh so konfiguriert werden, dass standardmäßig die Verschlüsselung verwendet wird? Warum wird hier die Chiffre benötigt?

Nitine
quelle
Was passiert auf dem Server, von dem Sie diese Fehlermeldung erhalten telnet ip.or.name.of.offending.server 22?
MadHatter
1
Beide Seiten scheinen zu glauben, dass die andere Seite die Verbindung geschlossen hat. An diesem Punkt brach ich tcpdump oder wireshark aus und ließ es an beiden Enden laufen.
Michael Hampton
@ MadHatter Ich kann auf Port 22 telneten und bekomme eine SSH-Antwort.
Nitins
Versuchen Sie, frühere Versionen von openssh wie 6.5p1 zu kompilieren, um festzustellen, ob dieses Verhalten auf eine Änderung der Codebasis zurückzuführen ist.

Antworten:

7

Das Problem klingt wie ein serverseitiger Fehler. Wenn der Client die Liste der Chiffren sendet, erwartet der openssh-Server wahrscheinlich, dass er die Liste in einem einzigen Systemaufruf lesen kann.

Wenn die Liste der unterstützten Chiffren länger ist als in einem Paket übertragen werden kann, erhält der Server beim ersten Aufruf möglicherweise weniger Bytes als erwartet. Das richtige Verhalten auf dem Server wäre ein erneuter Aufruf, um die restlichen Bytes abzurufen. Aus der angezeigten Problembeschreibung geht jedoch hervor, dass der Server die Verbindung beendet, wenn nicht sofort die vollständige Liste der Chiffren abgerufen wurde. Wenn das nächste Paket vom Client eintrifft, sendet der Server eine zurückgesetzte Verbindung an den Client.

Das Konfigurieren des Clients für die Verwendung einer kürzeren Liste von Chiffren würde dann den Fehler umgehen. Der openssh-Client sucht an folgenden Stellen nach der Liste der Chiffren:

  1. Verwenden Sie in der Befehlszeile entweder -c cipher_spec oder -o Ciphers = cipher_spec
  2. In ~ / .ssh / config durch Angabe von Ciphers cipher_spec im entsprechenden Hostabschnitt oder vor dem ersten Host.
  3. Verwenden Sie in / etc / ssh / ssh_config dasselbe Format wie in ~ / .ssh / config
  4. Eine zum Zeitpunkt der Kompilierung in den Client integrierte Standardliste.

Bei den beiden Konfigurationsdateien handelt es sich jeweils um benutzerspezifische und systemweite Einstellungen. Verwenden, Ciphers aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbcwie Eric vorgeschlagen hat, sollte gut funktionieren.

Kasperd
quelle
Ist das ein bekannter Fehler in dieser Version von openssh? Hat jemand einen Link zum OpenSSH-Bug-Tracker für dieses Problem?
user313114
1
@ user313114 Ich habe keinen solchen Tracker gesucht, weil ich glaube, der Fehler wurde bereits in den neuesten Versionen vor drei Jahren behoben, als diese Antwort geschrieben wurde.
Kasperd
4

Sie können die Verschlüsselung in der ssh-Konfigurationsdatei angeben (/ etc / ssh / ssh_config oder ähnlich, abhängig von $ PREFIX usw.). Jede Option, die Sie über die Befehlszeile an den ssh-Client übergeben, kann in der Konfigurationsdatei ssh (client) festgelegt werden.

Hier ist die relevante Zeile (nur Kommentar entfernen):

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

quelle
3

Ich hoffe, es hilft jemandem:

# 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

Bearbeiten Sie sshd_config, indem Sie einen Wert hinzufügen

add :  MaxAuthTries 3

Bearbeiten Sie ssh_config, indem Sie einen Wert auskommentieren

Ciphers aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc
Jānis Konošonoks
quelle
0

Dieses Problem wurde behoben, indem die folgenden Dateiberechtigungen auf 600 geändert wurden.

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

Außerdem wurde die Berechtigung für alle anderen Dateien in '/ etc / ssh /' auf 644 geändert. Alle Dateien müssen Eigentum von 'root' sein.

Nachfolgend finden Sie die vollständigen Befehle zum Zuweisen der richtigen Berechtigungen für alle Dateien im Verzeichnis '/ 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

jash
quelle
-1

Mein Problem, bei dem genau die gleichen Symptome auftraten, war auf abgeschnittene Hostschlüssel zurückzuführen. Versuchen Sie, sie neu zu erstellen mit:

sudo rm /etc/ssh/ssh_host_*
sudo ssh-keygen -A
Srdjan Grubor
quelle