2012-05-08 14:22:34 +0000 2012-05-08 14:22:34 +0000
147
147
Advertisement

Co to jest odcisk palca SSH i jak jest on generowany?

Advertisement

Zawsze stwierdzam, że otrzymuję tę wiadomość, gdy ssh do nowej maszyny:

12:f8:7e:78:61:b4:bf:e2:de:24:15:96:4e:d4:72:53

Co to znaczy? Czy każda maszyna będzie miała za każdym razem ten sam odcisk palca?

Jak są generowane te odciski palców? Od jakich parametrów są one zależne?

Advertisement
Advertisement

Odpowiedzi (5)

128
128
128
2012-07-24 16:26:09 +0000

Możesz wygenerować odcisk palca dla klucza publicznego używając ssh-keygen jak np.:

ssh-keygen -lf /path/to/key.pub

Konkretny przykład (jeśli używasz klucza publicznego RSA):

$ ssh-keygen -lf ~/.ssh/id_rsa.pub
2048 00:11:22:33:44:55:66:77:88:99:aa:bb:cc:dd:ee:ff /Users/username/.ssh/id_rsa.pub (RSA)

Pierwsza część (2048) to długość klucza w bitach, druga część (00:11:22:33:44:55:66:77:88:99:aa:bb:cc:dd:ee:ff) to odcisk palca klucza publicznego, trzecia część to lokalizacja samego pliku klucza publicznego.

W nowszych wersjach OpenSSH, zamiast szesnastkowego MD5, wyświetlany jest kod SHA-256 kodowany przez Base64. Aby pokazać starszy styl hash, użyj

$ ssh-keygen -l -E md5 -f ~/.ssh/id_rsa.pub
74
74
74
2014-02-08 20:40:35 +0000

Odcisk palca to MD5 nad danymi binarnymi w kluczu publicznym zakodowanym w Base64.

$ ssh-keygen -f foo
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in foo.
Your public key has been saved in foo.pub.
The key fingerprint is:
65:30:38:96:35:56:4f:64:64:e8:e3:a4:7d:59:3e:19 andrew@localhost
The key's randomart image is:
+--[RSA 2048]----+
| +*..+* |
| =. +.= |
| . . .o . |
| o+ E |
| S= . + o |
| . o o + |
| . . |
| |
| |
+-----------------+
$ cat foo.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDEbKq5U57fhzQ3SBbs3NVmgY2ouYZfPhc6cXBNEFpRT3T100fnbkYw+EHi76nwsp+uGxk08kh4GG881DrgotptrJj2dJxXpWp/SFdVu5S9fFU6l6dCTC9IBYYCCV8PvXbBZ3oDZyyyJT7/vXSaUdbk3x9MeNlYrgItm2KY6MdHYEg8R994Sspn1sE4Ydey5DfG/WNWVrzFCI0sWI3yj4zuCcUXFz9sEG8fIYikD9rNuohiMenWjkj6oLTwZGVW2q4wRL0051XBkmfnPD/H6gqOML9MbZQ8D6/+az0yF9oD61SkifhBNBRRNaIab/Np7XD61siR8zNMG/vCKjFGICnp andrew@localhost
$ echo 'AAAAB3NzaC1yc2EAAAADAQABAAABAQDEbKq5U57fhzQ3SBbs3NVmgY2ouYZfPhc6cXBNEFpRT3T100fnbkYw+EHi76nwsp+uGxk08kh4GG881DrgotptrJj2dJxXpWp/SFdVu5S9fFU6l6dCTC9IBYYCCV8PvXbBZ3oDZyyyJT7/vXSaUdbk3x9MeNlYrgItm2KY6MdHYEg8R994Sspn1sE4Ydey5DfG/WNWVrzFCI0sWI3yj4zuCcUXFz9sEG8fIYikD9rNuohiMenWjkj6oLTwZGVW2q4wRL0051XBkmfnPD/H6gqOML9MbZQ8D6/+az0yF9oD61SkifhBNBRRNaIab/Np7XD61siR8zNMG/vCKjFGICnp' \
    | base64 -D | md5
6530389635564f6464e8e3a47d593e19

Md5sum 6530389635564f6464e8e3a47d593e19 to odcisk palca wyświetlany podczas generowania klucza, tylko bez dwukropków rozdzielających.


Jednak jeśli masz do czynienia z odciskami palców, które Amazon pokazuje w konsoli EC2 Key Pairs niestety może to być inna bestia . Jeśli jest to 32-cyfrowy ciąg heksadecymalny, to jest to standardowy MD5 SSH z kluczem publicznym powyżej. Ale jeśli jest to 40 cyfr heksadecymalnych, to tak naprawdę jest to odcisk palca obliczony przez pobranie SHA1 klucza private w formacie PKCS#8:

$ openssl pkcs8 -in foo -nocrypt -topk8 -outform DER | openssl sha1 -c
e2:77:39:d3:53:a7:62:68:5f:da:82:0e:99:61:30:64:a2:88:c4:58
69
Advertisement
69
69
2012-05-08 14:41:50 +0000
Advertisement

Odcisk palca jest oparty na kluczu publicznym gospodarza, zwykle na “/etc/ssh/ssh\_host_rsa_key.pub” Ogólnie rzecz biorąc, jest to łatwe do identyfikacji/weryfikacji gospodarza, z którym się łączysz.

Jeśli odcisk palca się zmieni, maszyna, z którą się łączysz, zmieniła swój klucz publiczny. To może nie być zła rzecz (zdarza się z ponowną instalacją ssh), ale może również wskazywać, że łączysz się z inną maszyną w tej samej domenie/IP (zdarza się, gdy łączysz się przez coś takiego jak load balancer) lub że jesteś celem ataku man-in-the-middle, gdzie atakujący w jakiś sposób przechwytuje/przekazuje połączenie ssh, aby połączyć się z innym hostem, który może być snooping użytkownika/pw.

Podsumowanie: jeśli zostaniesz ostrzeżony o zmianie odcisku palca, bądź ostrożny i sprawdź podwójnie, czy rzeczywiście łączysz się z właściwym hostem przez bezpieczne połączenie. Choć w większości przypadków jest to nieszkodliwe, może to być oznaką potencjalnego problemu

Zobacz: http://www.lysium.de/blog/index.php?/archives/186-How-to-get-ssh-server-fingerprint-information.html i: http://en.wikipedia.org/wiki/Public\_key_fingerprint

23
23
23
2019-03-29 21:52:44 +0000

Jeśli chcesz sprawdzić, czy plik z kluczem SSH jest taki sam, jak ten zgłoszony przez githuba jako “Klucz wdrożeniowy”, to jest to dla Ciebie…

Z prywatnego adresu URL: https://github.com/\/<po_nazwa użytkownika>/settings/klucze zobaczysz

Na terminalu:

$ ls -l id*
-rw------- 1 bruno staff 1675 Mar 29 17:03 id_rsa
-rw-r--r-- 1 bruno staff 416 Mar 29 17:03 id_rsa.pub

$ ssh-keygen -E md5 -lf id_rsa
2048 MD5:07:b4:00:a4:65:ef:44:89:05:84:60:0c:c9:b2:36:5e ec2-user@ip-10-2-1-16.ec2.internal (RSA)

$ ssh-keygen -E md5 -lf id_rsa.pub
2048 MD5:07:b4:00:a4:65:ef:44:89:05:84:60:0c:c9:b2:36:5e ec2-user@ip-10-2-1-16.ec2.internal (RSA)

Zauważysz, że otrzymujesz ten sam odcisk palca zarówno dla kluczy prywatnych, jak i publicznych.

Ta sama komenda może być połączona z czystą funkcją GitHuba, którą jest fakt, że służą one publicznie do obsługi kluczy publicznych SSH użytkowników pod adresem https://github.com/\.key

Oto jednolinijka, którą możesz wykorzystać.

$ curl -sL https://github.com/RichardBronosky.keys | while read; do echo -e "\nkey #$((++i)):"; ssh-keygen -E md5 -lf - <<<"$REPLY"; echo $REPLY; done

key #1:
2048 MD5:07:b4:00:a4:65:ef:44:89:05:84:60:0c:c9:b2:36:5e no comment (RSA)
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDJGT35gvsFveu+80qgurrLHId0h55E9jliM7Fo0mV9b7eg3EfyagkAcJUSMFkoov3HY4CW0yzOc7WlN57ABwvpRz1ioFDex0n0FkjoSEs5ROeT1OneRK6Bf6XnplgPuQ/LSSkv3kmK6I29R+YWi6TjDvLLoA5BrXJjOMfUv36jxWCDtk/5ZdhMZqhsMuDm06Jg5JBu6n5jQaZkmaIaunz7vOfwVG9LoCI+MYyIdo2S4VTva7Ee7jfAvgSUUgHTjhzsPO0/Ww5a/Kz2ehXW27aJxj/QPLfYR2LmTMbQKm3WpB8P1LjoiU7zjPoVoZ43a4P2JLUDidGKCd3eY5b5xewz

key #2:
2048 MD5:f7:98:f1:0b:73:c6:2a:21:00:7a:70:1d:0f:cf:d8:cc no comment (RSA)
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCQsZrjwKjB4WnE4SwVdDX5eEMxKzPHFBVKKpo9vvWUXRQwdTZy6iVOkyF26IPR+xDPzslzXOClKXUrWEh6La/EMpRwuMrWAbMIJFeDHOb56q4azgopoJmMJHo0yxGu0Ts4XszMACYRhlG6uK2AP5SYiOTp1zKPFjazXAdwLXyOvJurzy6KKuGJdSs/sj9+4uehgyRNOhehCSfg71tJJYwRvO2DDfLgaVEKOgZx58gEnJfhhz9D7rbvdZNhw/hCgtVNJaQF9Mdke2OPwWSo8i0/XNb9Bu/GRXqwMZrxDBhyzieocW40cwuzxWfzoi03aISdtQ1HtawH8+/sswviM1+B
1
Advertisement
1
1
2017-11-26 04:32:06 +0000
Advertisement
ssh-keygen -r host.name.com

Wyświetla odciski palców dla wszystkich skonfigurowanych kluczy publicznych na instancji sshd.

Można je następnie umieścić w rekordach DNS SSHFP .

Advertisement

Pytania pokrewne

19
12
16
13
9
Advertisement