SSH nie działa już po aktualizacji do 10.12.4


5

Od około roku z powodzeniem używam następującego skryptu do inicjowania przekierowania portów:

ssh-add -K ~/.ssh/id_rsa
ssh -f admin@ssh.mydomain.com -L 50003:inst3:3389 -N -p 33233
ssh -f admin@ssh.mydomain.com -L 50005:inst5:3389 -N -p 33233
ssh -f admin@ssh.mydomain.com -L 50006:inst6:3389 -N -p 33233

Natychmiast po uruchomieniu dzisiejszej aktualizacji systemu operacyjnego do wersji 10.12.4 uruchomienie tego samego skryptu generuje następujący błąd:

Unable to negotiate with [my routable IP] port 33233: no matching host key type found. Their offer: ssh-dss

Niektóre artykuły wskazują, że problem można rozwiązać, edytując ssh_config i usuwając komentarz z określonej linii. To podejście nie zadziałało. Nadal jestem zamknięty z SSH. Dla odniesienia, oto kopia mojego pliku ssh_config:

# Host *
#   ForwardAgent no
#   ForwardX11 no
#   RhostsRSAAuthentication no
#   RSAAuthentication yes
#   PasswordAuthentication yes
#   HostbasedAuthentication no
#   GSSAPIAuthentication no
#   GSSAPIDelegateCredentials no
#   BatchMode no
#   CheckHostIP yes
#   AddressFamily any
#   ConnectTimeout 0
#   StrictHostKeyChecking ask
#   IdentityFile ~/.ssh/identity
#   IdentityFile ~/.ssh/id_rsa
#   IdentityFile ~/.ssh/id_dsa
#   IdentityFile ~/.ssh/id_ecdsa
#   IdentityFile ~/.ssh/id_ed25519
#   Port 22
#   Protocol 2
#   Cipher 3des
#   Ciphers aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc
MACs hmac-md5,hmac-sha1,umac-64@openssh.com,hmac-ripemd160
#   EscapeChar ~
#   Tunnel no
#   TunnelDevice any:any
#   PermitLocalCommand no
#   VisualHostKey no
#   ProxyCommand ssh -q -W %h:%p gateway.example.com
#   RekeyLimit 1G 1h

Próbowałem odkomentować linię zaczynającą się od „MACs hmac -...”, ale to nie miało znaczenia. Co mam teraz spróbować?

Odpowiedzi:


6
no matching host key type found. Their offer: ssh-dss

Ten błąd mówi, że zdalny serwer oferuje tylko klucz hosta DSA. Obecnie uważa się to za słabe ze stałą długością 1024 bitów. Powinieneś zaktualizować serwer i skonfigurować różne klucze (RSA).

Jako obejście, można użyć HostKeyAlgorithms +ssh-dssw ~/.ssh/config, który pozwoli Ci połączyć się z tym serwerem, dokładnie tak, jak to opisano w dokumentacji urzędowej dla starszych algorytmów w OpenSSH .


To rozwiązanie działa. Dzięki. Warto jednak zaznaczyć, że jak widać w moim skrypcie, używam RSA, a nie DSA. Ten klucz RSA, do którego odwołuje się mój skrypt, jest tym, który jest powiązany z moim kontem użytkownika na serwerze SSH, z którym się łączę. Może nie rozumiem różnicy między DSS a DSA?
Festus Martingale

DSS ~ DSA. Tylko ostatnia litera różni się, jeśli odwołuje się do algorytmu lub systemu. Jak wspomniałem w odpowiedzi, nie chodzi o klucz uwierzytelnienia użytkownika, ale klucz hosta!
Jakuje

O! Nie zdawałem sobie sprawy, że istnieje różnica między tymi dwoma (nowymi w tym, jak można powiedzieć). Tak więc serwer SSH ma swój własny klucz. Wygląda na to, że mam trochę badań. Dzięki za wskazanie mi właściwego kierunku. Przynajmniej mogę teraz połączyć.
Festus Martingale
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.