Odpowiedzi:
Odcisk palca jest oparty na kluczu publicznym hosta, zwykle oparty na pliku „/etc/ssh/ssh_host_rsa_key.pub”. Zasadniczo jest to łatwe do identyfikacji / weryfikacji hosta, z którym się łączysz.
Jeśli odcisk palca ulegnie zmianie, urządzenie, z którym się łączysz, zmieniło swój klucz publiczny. To może nie być złą rzeczą (dzieje się to po ponownej instalacji ssh), ale może również oznaczać, że łączysz się z innym komputerem w tej samej domenie / adresie IP (dzieje się to, gdy łączysz się za pomocą usługi równoważenia obciążenia) lub są atakowane przez man-in-the-middle, w którym atakujący w jakiś sposób przechwytuje / przekierowuje twoje połączenie ssh, aby połączyć się z innym hostem, który może szpiegować twojego użytkownika / pw.
Konkluzja: jeśli zostaniesz ostrzeżony o zmianie odcisku palca, bądź ostrożny i dokładnie sprawdź, czy faktycznie łączysz się z właściwym hostem za pośrednictwem bezpiecznego połączenia. Chociaż przez większość czasu jest to nieszkodliwe, może to wskazywać na potencjalny problem
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
~/.ssh/known_hosts
. W ten sposób, gdy połączysz się z serwerem, twój klient SSH rozpozna ten serwer, ponieważ zapisałeś jego klucz publiczny known_hosts
. Dlatego tak naprawdę nigdy nie powinieneś mówić „tak”, gdy klient SSH mówi „Nie można ustalić autentyczności hosta”. Zawsze należy wcześniej dodać klucz publiczny serwera.
~/.ssh/known_hosts
pliku i nigdy nie mówić tak, gdy klient SSH powie ci „Nie można ustalić autentyczności klienta” lub gdy powie ci „Klucz publiczny serwera został zmieniono ”.
Możesz wygenerować odcisk palca dla klucza publicznego za pomocą ssh-keygen
:
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, a trzecia część to lokalizacja samego pliku klucza publicznego.
ssh-keygen -lf
zrobię to, co chcesz.
ssh-keygen -lf /etc/ssh/ssh_host_rsa_key.pub
. Pokazuje odcisk palca, który jest również wyświetlany przy logowaniu SSH do localhost.
ssh-keygen
zgłoszone sha256
odciski palców. Aby pobrać md5
odciski palców, pobiegłem ssh-keygen -l -E md5 -f ~/.ssh/id_rsa.pub
. #archlinux
ssh -o FingerprintHash=md5
lub jego odpowiednika ssh_config
na rzecz rzeczy, które używają ssh
jak scp
.
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
Numer md5sum 6530389635564f6464e8e3a47d593e19 to odcisk palca wyświetlany podczas generowania klucza, tylko bez dwukropków oddzielających.
Jeśli jednak masz do czynienia z odciskami palców wyświetlanymi przez Amazon w konsoli par kluczy EC2, niestety może to być inna bestia . Jeśli jest to 32-cyfrowy ciąg szesnastkowy, jest to standardowy odcisk palca klucza publicznego MD5 SSH powyżej. Ale jeśli ma 40 cyfr szesnastkowych, to w rzeczywistości jest to odcisk palca obliczony na podstawie SHA1 klucza prywatnego 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
awk '{print $2}' /path/to/keyfile.pub
lub podobny.
cat id_rsa.pub | cut -d' ' -f2 | base64 -d | md5sum
Jeśli chcesz sprawdzić plik klucza SSH, aby sprawdzić, czy jest on taki sam, jak ten, który jest zgłaszany przez github jako „Wdróż klucz”, jest to dla Ciebie ...
Z prywatnego adresu URL: https://github.com/<nazwa_użytkownika>/<repo_name>/settings/keys 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 otrzymasz ten sam odcisk palca zarówno dla klucza prywatnego, jak i publicznego.
To samo polecenie można połączyć z ciekawą funkcją GitHub, polegającą na tym, że publicznie obsługują klucze publiczne SSH użytkowników pod adresem https://github.com/<nazwa_użytkownika>. Klucze
Oto jedna linijka, której możesz użyć, aby z niej skorzystać.
$ 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
ssh-keygen -r host.name.com
Wysyła odciski palców dla wszystkich skonfigurowanych kluczy publicznych w instancji sshd.
Można je następnie umieścić w rekordach SSHFP DNS .