Gdzie jest generowany / przechowywany odcisk palca serwera SSH?

44

Zainstalowałem openssh-server i utworzyłem klucz za pomocą ssh-keygen. Następnie podjąłem próbę przetestowania go za pomocą przekierowania portów lokalnych ssh -L 8080:www.nytimes.com:80 127.0.0.1. Jednak kluczowy odcisk palca, który zapewnia to polecenie, nie jest kluczowym odciskiem palca, który otrzymuję, gdy to robię ssh-keygen -l. Nawet jeśli usunę mój katalog .ssh, nadal otrzymam ten sam odcisk palca, który nie jest tym, który utworzyłem ssh-keygen. Czy w moim systemie jest inny klucz? Gdzie jest ten klucz? Jak mogę wybrać ten klucz do użycia przez openssh-server?

bsamek
źródło

Odpowiedzi:

58

Podczas tworzenia sesji SSH zaangażowane są dwie różne pary kluczy (z odciskiem palca dla każdej pary). Jednym z nich jest klucz użytkownika, w którym jest przechowywany ~/.ssh. Tożsamość klucza SSH użytkownika jest czasem używana jako dane uwierzytelniające do logowania na innym komputerze (jeśli skonfigurowano logowanie na podstawie klucza).

Drugi to klucz serwera SSH. Jest to klucz, od którego widać odcisk palca podczas pierwszego połączenia z innym serwerem. Tożsamość tego klucza służy do upewnienia się, że logujesz się na serwerze SSH, na którym zamierzasz. Jest to ważne, jeśli używasz haseł, ponieważ nie chcesz przypadkowo próbować zalogować się na maszynie atakującego: atakujący dostanie Twoje hasło po wpisaniu. Następnie atakujący może zalogować się na maszynie, o której myślałeś, że się logujesz do! (nazywa się to „atakiem człowieka w środku” ) . Klucze, których serwer SSH używa do identyfikacji, gdy się do niego logujesz, znajdują się /etc/ssh/i zwykle nazywają coś w rodzaju ssh_host_rsa_key.

Możesz zmienić miejsce, w którym serwer SSH szuka klucza w pliku z tym ustawieniem./etc/ssh/sshd_configHostKey /path/to/host/key

Domyślnie ssh-keygenutworzy klucz dla bieżącego użytkownika, który domyślnie będzie przechowywany w ~/.ssh. Format klucza użytkownika i klucza serwera jest taki sam; Różnica jest, gdy są one umieszczone i czy /etc/ssh/sshd_configma HostKeydyrektywa wskazując im. Po zainstalowaniu pakietu openssh-server automatycznie generuje klucze do użycia przez serwer. Stąd pochodziły klucze o nieznanym odcisku palca. Jeśli chcesz zobaczyć odcisk palca klucza serwera SSH (RSA *), możesz uruchomić ssh-keygen -lf /etc/ssh/ssh_host_rsa_key.pub.

* Istnieją różne algorytmy szyfrowania. Każdy używa innego klucza. Najczęstsze z nich to DSA (słaby), RSA (stary domyślny) i ECDSA (nowy domyślny).

Azendale
źródło
1
Wyniki Google dla „ustawiania odcisku palca ssh”, mimo że te warunki są technicznie niepoprawne, są zaskakująco złe. Dobrze, że znalazłem to pośród nich.
Bart van Heukelom,
4
Dzięki za to. Jedna uwaga: „sudo” nie jest wymagane, jeśli wskażesz ssh-keygen na klucz publiczny. Czyli: ssh-keygen -lf /etc/ssh/ssh_host_rsa_key.pub. Ponadto w mojej instalacji był to klucz ECDSA, a nie klucz RSA, którego używał demon ssh, więc tak naprawdę musiałem uruchomić ssh-keygen -lf /etc/ssh/ssh_host_ecdsa_key.pub.
John Clements
Czy jest jakiś problem z pobieraniem kluczy publicznych ze starego dysku twardego i używaniem ich w nowej instalacji, nadpisywaniem ich w / etc / ssh? Klucz jest kluczem, prawda?
Adam
@Adam Nie widzę z tym problemu. Powinno to pomóc w uniknięciu problemów, gdy logujesz się zdalnie, a klucz się zmienił (co dzieje się, jeśli ponownie zainstalujesz nowy klucz zostanie wygenerowany.)
Azendale
3
Kiedy łączę sshsię z hostem od 14.04 po raz pierwszy, pokazuje odcisk palca MD5. Aby ssh-keygen16.04 pokazywał odcisk palca MD5, musisz użyć -E md5opcji.
jarno
14

Klucze hosta SSH są przechowywane w /etc/ssh/których zazwyczaj nie trzeba wybierać. Te klucze zostały wygenerowane podczas instalacji pakietu openssh-server.

Możesz wymienić odcisk palca kluczy, ssh-keygen -l -f /etc/ssh/ssh_host_key.pubchociaż będziesz musiał powtórzyć to dla każdego klucza publicznego.

 

ajmitch
źródło
7

ssh-keygennie generuje odcisku palca SSH na twoim serwerze. To jest generowane przez serwer SSH. ssh-keygentworzy w systemie parę kluczy publiczny / prywatny, których można później użyć do uzyskania dostępu do serwera SSH bez konieczności przesyłania do serwera hasła w postaci zwykłego tekstu.

Odcisk palca twojego serwera oczywiście nie będzie wyświetlany jako odcisk palca wygenerowanej pary kluczy publiczny / prywatny, ponieważ są one oddzielone od siebie.

Thomas Ward
źródło
3
Zauważ, że powinieneś być w stanie wygenerować klucze ssh dla swojego serwera (w przeciwieństwie do tego, co mówisz), ale musisz tylko umieścić je we właściwym miejscu, aby były używane do tego celu.
Azendale