Otisci
Otisak je heš bloba javnog ključa, dovoljno kratak da se uporedi okom. OpenSSH prikazuje SHA-256 u Base64 (SHA256:…) od verzije 6.8; stariji oblik MD5:xx:xx:… je ono što GitHub, AWS i stara dokumentacija još prikazuju za neke ključeve. Oba se ovde računaju iz istih bajtova koje ssh-keygen -lf key.pub hešira, pa se tačno poklapaju. Koristite ih da potvrdite da je ključ u authorized_keys onaj koji mislite, da uporedite upozorenje o host ključu sa serverskim ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub, i da identifikujete ključeve u konzolama cloud provajdera.
Tipovi ključeva
| Tip | Veličina | Ocena |
|---|---|---|
| ssh-ed25519 | 256-bitni | Najbolji izbor: mali, brz, nema mogućnosti greške u parametrima. Podržan od OpenSSH 6.5 (2014). |
| ssh-rsa | 2048–4096 | U redu sa SHA-2 potpisima (rsa-sha2-256/512, automatski u aktuelnom OpenSSH); 3072+ bita za nove ključeve. Ime tipa ključa je isto bez obzira na to da li se koriste SHA-1 ili SHA-2 potpisi. |
| ecdsa-sha2-nistp256/384/521 | 256–521 | U redu, ali Ed25519 ima prednost; NIST krive zavise od dobre nasumičnosti u trenutku potpisivanja. |
| ssh-dss | 1024 | Zastareo; podrazumevano onemogućen od 7.0 i uklonjen u 9.8. |
| [email protected] | 256 | Ključ čuvan na FIDO2 bezbednosnom ključu (YubiKey); zahteva dodir pri svakoj upotrebi. |
Formati
OpenSSH jednolinijski zapis je tip base64-blob komentar, gde je blob ime tipa i polja ključa kao stringovi sa prefiksom dužine. PEM PUBLIC KEY (SubjectPublicKeyInfo) je ono što traže OpenSSL, JWT biblioteke i većina softvera koji nije SSH. ssh-keygen -e -m PKCS8 -f key.pub konvertuje u jednom smeru, a ssh-keygen -i -m PKCS8 u drugom; ova stranica radi oba bez flagova.
Ograničavanje ključa
Opcije na početku authorized_keys linije ograničavaju šta ključ sme da radi: from= ograničava izvorne adrese, command= nameće jednu komandu (originalna je dostupna u $SSH_ORIGINAL_COMMAND), a restrict jednom rečju onemogućava prosleđivanje, PTY i agent. Ključ za backup treba da bude restrict,command="rrsync /backup"; deploy ključ ne treba da dozvoljava ništa osim deploy skripte.
Pitanja
Kako da dobijem svoj javni ključ?
cat ~/.ssh/id_ed25519.pub (ili id_rsa.pub). Ako imate samo privatni ključ: ssh-keygen -y -f ~/.ssh/id_ed25519 ispisuje javni deo. Nikada nigde ne lepite privatni ključ (datoteku bez .pub).
Zašto GitHub prikazuje drugačiji otisak?
GitHub prikazuje SHA256 otiske za ključeve dodate od 2018. i MD5 za starije. Uporedite odgovarajući format; oba su prikazana ovde. Proverite i da gledate istu datoteku ključa.
Kako da proverim otisak host ključa servera?
Na serveru: ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub. Uporedite sa onim što klijent ispisuje pri prvom povezivanju. Cloud provajderi ga prikazuju u konzoli ili serijskom logu; GitHub objavljuje svoje otiske u dokumentaciji.
Može li ovo da konvertuje privatni ključ?
Ne, namerno. Konverzija privatnog ključa pripada vašoj mašini: ssh-keygen -p -m PEM -f key (OpenSSH → PEM) ili ssh-keygen -p -m RFC4716. Ništa što ovde nalepite se nikuda ne šalje, ali privatni ključ uopšte ne bi trebalo da uđe u pregledač.