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 [email protected] -L 50003:inst3:3389 -N -p 33233
ssh -f [email protected] -L 50005:inst5:3389 -N -p 33233
ssh -f [email protected] -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,[email protected],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ć?

Festus Martingale
źródło

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 .

Jakuje
źródło
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