Jakie znaczenie ma użytkownik / host na końcu pliku klucza publicznego SSH?

73

Nie mogę zrozumieć, dlaczego plik klucza publicznego SSH generowany przez ssh-keygenużytkownika i hosta znajduje się na jego końcu.

Przykład: id_rsa.pub

ssh-rsa ... rest of file ... /CA9gyE8HRhNMG6ZDwyhPBbDfX root@mydomain

Zwróć uwagę root@mydomainna koniec pliku.

Jeśli mogę użyć klucza publicznego w dowolnym miejscu z dowolnym użytkownikiem do uwierzytelnienia przy użyciu mojego klucza prywatnego, jakie znaczenie root @ mojadomena ma w procesie uwierzytelniania?

A może jest to tylko miejsce na określenie, kto został wydany?

Basil A
źródło
2
Widziałem niektóre nadgorliwe formularze internetowe, które wymagają pola komentarza zawierającego symbol @, ale nie ma to technicznego powodu.
pisklęta

Odpowiedzi:

106

To pole jest komentarzem i można je dowolnie zmieniać lub ignorować. user@hostDomyślnie jest ustawiony na ssh-keygen.

Michael Hampton
źródło
1
Krótko i na temat. Możliwość zmiany komentarza rozwiąże dla mnie zagadkę. Myślałem, że odgrywa pewną rolę w procesie uwierzytelniania ssh.
Basil A
2
@BasilA Mam kilka kluczy, w których całkowicie je usunąłem.
Michael Hampton
3
Podczas konfigurowania logowania klucza SSH do instancji w Google Cloud Compute , GCC używa tego pola komentarza do identyfikacji nazwy użytkownika w instancji, z którą klucz ma być powiązany.
hBy2Py,
53

Zostało to krótko wyjaśnione na stronie podręcznika sshd(8)w sekcji dotyczącej autoryzowanych kluczy:

Protokół 2 klucz publiczny składa się z: opcje , keytype , klucz zakodowane base64 , comment.

W opensshkontekście autoryzowanych kluczy istnieje tylko znaczenie komentarza. Istnieją jednak implementacje SSH, które nadają znaczenie tej części, ponieważ na przykład implementacja SSH w modemach LANCOM wykorzystuje ten komentarz jako nazwę użytkownika, dla której klucz jest ważny.

Jakuje
źródło
6
+1 za zacytowanie mężczyzny
mgarciaisaia,
17

Jak inni zwrócili uwagę, że jest to komentarz, aby umożliwić Ci określić, które jest kluczem, który.

Patrząc na pojedynczy klucz np id_rsa.pub. Nie robi to dużej różnicy, ale patrząc na potencjalnie długą listę kluczy, na przykład to, co masz w authorized_keyspliku, bardzo pomocna jest możliwość łatwego zidentyfikowania, który klucz jest który.

Ponadto, ssh-keygenjest to domyślne user@hostname, co dla typowych przypadków użycia jest jasne, identyfikator, który klucz jest ( user@domainnie będzie).

Håkan Lindqvist
źródło
5

Bardzo, bardzo proste: ja i wy jesteście ludźmi za pomocą maszyny. Patrząc na ten przykład, który opublikowałeś:

ssh-rsa [piles of gobbledygook]…CA9gyE8HRhNMG6ZDwyhPBbDfX root@mydomain

Maszyna może to przeczytać:

ssh-rsa [piles of gobbledygook]…CA9gyE8HRhNMG6ZDwyhPBbDfX

Człowiek może przeczytać ten komentarz:

root@mydomain

Ludzie zapominają, że mimo wszystko mogłoby wyglądać skomplikowane w systemach komputerowych, mogą być w rzeczywistości ton bardziej skomplikowana, jeśli kod został zaprojektowany wyłącznie do spożycia przez maszyny. Mam na myśli spojrzenie na ukryty kod złośliwego oprogramowania. Po odkodowaniu i sformatowaniu jest czytelny dla człowieka. Ale ktoś musiał zrobić wszystko, co w jego mocy, aby utrudnić ludziom czytanie.

Domyślnie wszystkie typy plików kodujących i konfiguracyjnych w systemie komputerowym mają strukturę przeznaczoną do spożycia przez ludzi, ponieważ… Jesteśmy ludźmi używającymi maszyn i maszyn nie potrzebujemy takich rzeczy jak:

  • Komentarze
  • Wcięcia.
  • Zmienne i funkcje zapisane w języku czytelnym dla człowieka.

Tak więc komentarz jest przeznaczony dla ciebie, dla mnie i dla nikogo innego. Najprawdopodobniej działałoby to bez komentarza. Ale pewnego razu coś nie działa o 3 nad ranem i szukasz odpowiedniego klucza publicznego, będziesz chciał / śnił / modlił się o komentarz.

JakeGould
źródło
7
„maszyny nie potrzebują takich rzeczy jak ... Wgłębienia” kaszel Python kaszel
CVn
1
@ MichaelKjörling „... chyba że są do tego zobowiązani”. :-)
hBy2Py