Ich versuche, auf eine entfernte Maschine zu sshen, der Versuch schlägt fehl:
$ ssh -vvv admin@192.168.100.14
OpenSSH_7.7p1, OpenSSL 1.0.2o 27 Mar 2018
.....
debug2: ciphers ctos: aes128-cbc,3des-cbc,aes192-cbc,aes256-cbc
debug2: ciphers stoc: aes128-cbc,3des-cbc,aes192-cbc,aes256-cbc
debug2: MACs ctos: umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1
debug2: MACs stoc: umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1
debug2: compression ctos: none,zlib@openssh.com
debug2: compression stoc: none,zlib@openssh.com
debug2: languages ctos:
debug2: languages stoc:
debug2: first_kex_follows 0
debug2: reserved 0
debug1: kex: algorithm: curve25519-sha256
debug1: kex: host key algorithm: rsa-sha2-512
Unable to negotiate with 192.168.100.14 port 22: no matching cipher found. Their offer: aes128-cbc,3des-cbc,aes192-cbc,aes256-cbc
Soweit ich die letzte Zeichenfolge des Stammes verstehen, der Server bietet eine der folgenden vier Verschlüsselungsalgorithmen zu verwenden: aes128-cbc,3des-cbc,aes192-cbc,aes256-cbc
. Sieht so aus, als ob mein ssh-Client keinen von ihnen unterstützt, sodass der Server und der Client keine weiteren Verhandlungen führen können.
Mein Client unterstützt jedoch alle vorgeschlagenen Algorithmen:
$ ssh -Q cipher
3des-cbc
aes128-cbc
aes192-cbc
aes256-cbc
rijndael-cbc@lysator.liu.se
aes128-ctr
... and there are several more.
Und wenn ich den Algorithmus so explizit spezifiziere:
ssh -vvv -c aes256-cbc admin@192.168.100.14
Ich kann mich erfolgreich beim Server anmelden.
Meine ~/.ssh/config
enthält keine chiffrierbezogenen Anweisungen (tatsächlich habe ich sie vollständig entfernt, aber das Problem bleibt bestehen).
Warum können Client und Server ohne meine ausdrücklichen Anweisungen nicht entscheiden, welche Verschlüsselung verwendet werden soll? Der Client versteht, dass der Server dies unterstützt aes256-cbc
. Der Client versteht, dass er es selbst verwenden kann. Warum nicht einfach?
Einige zusätzliche Hinweise:
Vor einiger Zeit (ungefähr einem Monat) gab es kein solches Problem. Ich habe seitdem keine ssh-Konfigurationsdateien mehr geändert. Ich habe zwar installierte Pakete aktualisiert.
Es gibt eine Frage, die ein sehr ähnlich aussehendes Problem beschreibt, aber es gibt keine Antwort auf meine Frage: ssh kann nicht verhandeln - es wurde keine passende Schlüsselaustauschmethode gefunden
UPDATE: Problem behoben
Wie telcoM erklärte, liegt das Problem beim Server: Es werden nur die veralteten Verschlüsselungsalgorithmen vorgeschlagen. Ich war sicher, dass Client und Server nicht veraltet sind. Ich habe mich beim Server angemeldet (übrigens ist es Synology, aktualisiert auf die neueste verfügbare Version) und das überprüft /etc/ssh/sshd_config
. Die allererste (!) Zeile dieser Datei lautete:
Ciphers aes128-cbc,3des-cbc,aes192-cbc,aes256-cbc
Das ist sehr seltsam (die Tatsache, dass die Zeile an erster Stelle in der Datei steht). Ich bin mir sicher, dass ich die Datei noch nie zuvor berührt habe. Allerdings habe ich die Zeile geändert:
Ciphers aes256-ctr,aes128-cbc,3des-cbc,aes192-cbc,aes256-cbc
den server neu gestartet (habe nicht herausgefunden, wie man den sshd
service nur neu startet), und jetzt ist das problem weg: ich kann ssh auf den server wie gewohnt.