Próbuję ssh do zdalnego komputera, próba nie powiedzie się:
$ 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
O ile mi zrozumieć ostatni ciąg dziennika, oferty serwerów używać jednego z następujących algorytmów szyfrowania 4: aes128-cbc,3des-cbc,aes192-cbc,aes256-cbc
. Wygląda na to, że mój klient ssh nie obsługuje żadnego z nich, więc serwer i klient nie mogą dalej negocjować.
Ale mój klient obsługuje wszystkie sugerowane algorytmy:
$ ssh -Q cipher
3des-cbc
aes128-cbc
aes192-cbc
aes256-cbc
rijndael-cbc@lysator.liu.se
aes128-ctr
... and there are several more.
A jeśli jawnie podam taki algorytm:
ssh -vvv -c aes256-cbc admin@192.168.100.14
Mogę pomyślnie zalogować się do serwera.
Mój ~/.ssh/config
nie zawiera żadnych dyrektyw związanych z szyfrem (właściwie usunąłem go całkowicie, ale problem pozostaje).
Dlaczego więc klient i serwer nie mogą zdecydować, którego szyfru użyć bez moich wyraźnych instrukcji? Klient rozumie, że serwer obsługuje aes256-cbc
, klient rozumie, że może z niego korzystać samodzielnie, dlaczego po prostu z niego nie skorzystać?
Kilka dodatkowych uwag:
Jakiś czas temu (około miesiąca) nie było takiego problemu. Od tego czasu nie zmieniłem żadnych plików konfiguracyjnych ssh. Jednak zaktualizowałem zainstalowane pakiety.
Jest pytanie, które opisuje bardzo podobny problem, ale nie ma odpowiedzi na moje pytanie: ssh nie może negocjować - nie znaleziono pasującej metody wymiany kluczy
AKTUALIZACJA: problem rozwiązany
Jak wyjaśnił telcoM, problem dotyczy serwera: sugeruje tylko przestarzałe algorytmy szyfrowania. Byłem pewien, że zarówno klient, jak i serwer nie są przestarzałe. Zalogowałem się na serwerze (nawiasem mówiąc, to Synology, zaktualizowałem do najnowszej dostępnej wersji) i zbadałem /etc/ssh/sshd_config
. Pierwszą (!) Linią tego pliku było:
Ciphers aes128-cbc,3des-cbc,aes192-cbc,aes256-cbc
To bardzo dziwne (fakt, że wiersz jest pierwszy w pliku), jestem pewien, że nigdy wcześniej nie dotknąłem pliku. Jednak zmieniłem linię na:
Ciphers aes256-ctr,aes128-cbc,3des-cbc,aes192-cbc,aes256-cbc
zrestartowałem serwer (nie wymyśliłem, jak zrestartować sshd
tylko usługę), a teraz problem zniknął: mogę ssh na serwer jak zwykle.