Próbuję ssh do zdalnego komputera, próba nie powiedzie się:
$ ssh -vvv [email protected]
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: [email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],hmac-sha2-256,hmac-sha2-512,hmac-sha1
debug2: MACs stoc: [email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],hmac-sha2-256,hmac-sha2-512,hmac-sha1
debug2: compression ctos: none,[email protected]
debug2: compression stoc: none,[email protected]
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
[email protected]
aes128-ctr
... and there are several more.
A jeśli jawnie podam taki algorytm:
ssh -vvv -c aes256-cbc [email protected]
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.
Odpowiedzi:
Te
-cbc
algorytmy okazały się być podatne na atak. W rezultacie aktualne wersje OpenSSH domyślnie odrzucają te algorytmy: na razie są one nadal dostępne, jeśli ich potrzebujesz, ale jak odkryłeś, musisz je wyraźnie włączyć.Początkowo, gdy luka została odkryta (pod koniec 2008 r., Prawie 10 lat temu!), Algorytmy te zostały umieszczone tylko na końcu listy priorytetów ze względu na kompatybilność, ale teraz ich wycofanie w SSH osiągnęło fazę, w której algorytmy te są domyślnie wyłączone. Zgodnie z tym pytaniem w Cryptography.SE ten krok amortyzacji miał miejsce już w 2014 roku.
Rozważ to delikatne przypomnienie o aktualizacji serwera SSH , jeśli to w ogóle możliwe. (Jeśli jest to implementacja oprogramowania układowego, sprawdź, czy dostępne jest zaktualizowane oprogramowanie układowe dla twojego sprzętu).
źródło
Możesz zaktualizować konfigurację ssh z pliku znajdującego się w: / etc / ssh / ssh_config
sudo nano /etc/ssh/ssh_config
Ciphers aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,3des-cbc
Ctrl + X
. Naciśnij Enter, aby zapisać i wyjść.źródło
utwórz plik w ~ / .ssh / config i wklej poniżej treści
źródło