Próbuję zalogować się do routera DSL, ponieważ mam problem z pocztą wiersza polecenia. Mam nadzieję, że będę mógł ponownie skonfigurować router.
Kiedy wydam ssh
polecenie, dzieje się tak:
$ ssh [email protected]
Unable to negotiate with 10.255.252.1 port 22: no matching key exchange method found. Their offer: diffie-hellman-group1-sha1
więc wtedy spojrzałem na ten post wymiany stosu i zmodyfikowałem moje polecenie do tego, ale mam inny problem, tym razem z szyframi.
$ ssh -oKexAlgorithms=+diffie-hellman-group1-sha1 [email protected]
Unable to negotiate with 10.255.252.1 port 22: no matching cipher found. Their offer: 3des-cbc
więc czy istnieje polecenie oferujące 3des-cbc
szyfrowanie? Nie jestem pewien co do 3des, na przykład, czy chcę dodać go na stałe do mojego systemu.
Czy istnieje polecenie pozwalające na 3des-cbc
szyfr?
Jaki jest tutaj problem? To nie prosi o hasło.
ssh -o KexAlgorithms=diffe-hellman-group-sha1 [email protected]
wymusić na kliencie użycie starszego, mniej bezpiecznego algorytmu i sprawdź, czy router ma nowsze oprogramowanie układowe.ssh -vvv ...
ujawni wszystkie protokoły wymiany kluczy i szyfrów oferowane przez serwer.Odpowiedzi:
Ten konkretny błąd występuje podczas konfigurowania szyfrowanego kanału. Jeśli twój system i system zdalny nie współużytkują co najmniej jednego szyfru, nie ma szyfru do uzgodnienia i żaden szyfrowany kanał nie jest możliwy. Zazwyczaj serwery SSH oferują niewielką garść różnych szyfrów w celu zaspokojenia potrzeb różnych klientów; Nie jestem pewien, dlaczego serwer zostałby skonfigurowany tak, aby zezwalał tylko na 3DES-CBC.
Teraz 3DES-CBC nie jest straszny. Jest powolny i zapewnia mniejsze bezpieczeństwo niż niektóre inne algorytmy, ale nie można go natychmiast złamać, dopóki klucze są odpowiednio wybrane. Sam CBC ma pewne problemy z modyfikowaniem tekstu zaszyfrowanego w tranzycie, ale mocno podejrzewam, że wynikowe uszkodzenie zostanie odrzucone przez HMAC SSH, zmniejszając jego wpływ. Podsumowując, istnieją gorsze wybory niż 3DES-CBC i są lepsze. Zawsze należy jednak postępować ostrożnie, zastępując wartości domyślne związane z bezpieczeństwem, w tym wybór algorytmu szyfrowania i wymiany kluczy.Te wartości domyślne są domyślne z jakiegoś powodu; niektórzy całkiem sprytni ludzie poświęcili trochę mocy mózgu, biorąc pod uwagę opcje i ustalili, że to, co wybrano jako domyślne, zapewnia najlepsze ogólne bezpieczeństwo w porównaniu do kompromisu wydajności.
Jak się dowiedziałeś, możesz użyć
-c ...
(lub-oCiphers=...
), aby określić, który szyfr zaoferować po stronie klienta. W takim przypadku dodanie-c 3des-cbc
pozwala tylko 3DES-CBC od klienta. Ponieważ odpowiada to szyfrowi oferowanemu przez serwer, można ustanowić szyfrowany kanał, a połączenie przechodzi do fazy uwierzytelniania.Możesz także dodać to do swoich osobistych
~/.ssh/config
. Aby uniknąć globalnej zmiany w celu rozwiązania lokalnego problemu, możesz wprowadzić go w błądHost
. Na przykład, jeśli twoja konfiguracja SSH mówi obecnie (fikcyjny przykład):określając globalny domyślny port 9922 zamiast domyślnego 22, możesz dodać sekcję hosta dla hosta wymagającego specjalnej konfiguracji oraz globalną sekcję hosta dla przypadku domyślnego. To byłoby coś w stylu ...
Wcięcie jest opcjonalne, ale uważam, że znacznie poprawia czytelność. Puste linie i linie zaczynające się od
#
są ignorowane.Jeśli zawsze (lub głównie) logujesz się jako ten sam użytkownik w tym systemie, możesz także podać tę nazwę użytkownika:
Nie musisz dodawać
Host *
zwrotki, jeśli na początku nie było nic w ~ / .ssh / config, ponieważ w takim przypadku byłyby to tylko domyślne ustawienia systemowe lub systemowe (zwykle z / etc / ssh / ssh_config) używany.W tym momencie linia komend ssh do połączenia z tym hostem ogranicza się do zwykłego
i wszyscy inni użytkownicy w twoim systemie oraz połączenia ze wszystkimi innymi hostami z twojego systemu, zmiany nie mają wpływu.
źródło
Cipher
linię, ale potem zadziałało! Dzięki!Ok, przeczytałem stronę podręcznika i zorientowałem się.
Nie chciałem modyfikować mojego pliku konfiguracyjnego, więc szukałem terminu „szyfr” na stronie podręcznika, która pokazała mi
-c
opcję; pozwala mi to określić typ szyfrowania. polecenie zakończenia było wtedy:źródło
Ostatnio napotkałem ten problem przy użyciu PuTTY do połączenia z nowszą wersją Ubuntu. Wydaje się, że wcześniejsze wersje PuTTY nie miały zaktualizowanych szyfrów. Pobranie najnowszej wersji PuTTY naprawiło problem. To może być inne rozwiązanie.
źródło
Inna odpowiedź dla systemów MacOSX i CLI (na przykład SFTP): zapoznaj się z tym artykułem @ http://www.openssh.com/legacy.html (starsze opcje OpenSSL). Otrzymywałem stały błąd „nie można negocjować”, który został rozwiązany przez informacje w tym artykule, w szczególności ustawienie parametru konfiguracyjnego w pliku „~ / .ssh / config”.
BTW, dostałem ten błąd, kiedy mój docelowy serwer SFTP (nie pod moją administracją) ostatecznie wyłączył TLS 1.0 (opcja szyfrowania SSL) i wymaga TLS 1.1 lub 1.2.
źródło