ssh Nie można negocjować: „nie znaleziono pasującego szyfru”, odrzuca cbc

23

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/confignie 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:

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ć sshdtylko usługę), a teraz problem zniknął: mogę ssh na serwer jak zwykle.

lesnik
źródło
1
Powiązane - unix.stackexchange.com/questions/333728/… - pokazuje informacje o tym, jak wyłączyć.
slm
3
Miałem ten sam problem i stwierdziłem, że możesz łatwo to zmienić w interfejsie internetowym (ponieważ ssh nie działało dla mnie ...), ale przechodząc do „Terminal -> ustawienia zaawansowane” w panelu sterowania DSM i wybierając „wysoki” profil - z jakiegoś powodu miałem tam włączoną ręczną selekcję… Mam nadzieję, że to coś, co zrobiłem i o czym zapomniałem, a nie coś zrobionego przez poprzednią aktualizację DSM! - wybory są teraz aes128-ctr, aes128-gcm, aes192 *, aes256 *, dhge-sha256, curve25519-sha256, hmac-sha2-256
Zak

Odpowiedzi:

17

Te -cbcalgorytmy 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).

telcoM
źródło
3

Możesz zaktualizować konfigurację ssh z pliku znajdującego się w: / etc / ssh / ssh_config

  1. Uruchom terminal.
  2. Wklej linię do terminala: sudo nano /etc/ssh/ssh_config
  3. Wprowadź hasło. Naciśnij enter. Zostanie wyświetlony plik konfiguracyjny SSH.
  4. Usuń komentarz z wiersza: Ciphers aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,3des-cbc
  5. Prasa Ctrl + X. Naciśnij Enter, aby zapisać i wyjść.
Farhan Ar Rafi
źródło
1

utwórz plik w ~ / .ssh / config i wklej poniżej treści

Host *
  SendEnv LANG LC_*
  Ciphers +aes256-cbc
Yash Jagdale
źródło