Toto je starší verze dokumentu!
Přihlašování na SSH pomocí klíče je nejbezpečnější z mnoha metod, použitelných s OpenSSH. Už pro svou délku jsou mnohem obtížněji prolomitelné hrubou silou.
Klient se serveru představí a žádá o komunikaci. Pokud má server u sebe uložený veřejný klíč toho kdo se představil, zašifruje jím nějaká data a pošle je klientovi. Ten je díky svému tajnému soukromému klíči jako jediný dokáže rozluštit a pošle zpět. Server díky tomu ví, že klient je skutečně ten za koho se vydává a je ověřený.
Předtím je potřeba na server nahrát veřejný klíč klienta.
Pokud nemám, vytvořit na klientovi adresář
mkdir ~/.ssh && chmod 700 ~/.ssh
A vygenerovat do souborů veřejný a soukromý klíč (pokud klient svůj bezpečně uchovávaný klíč ještě nemá)
ssh-keygen
Možné volby
# specifikování typu, vychozi a doporuceny je rsa ssh-keygen -t rsa # specifikování delky, vychozi a doporuceny je rsa ssh-keygen -b 2048
Budeme dotázání kam klíč uložit (nabízené výchozí místo je nejvhodnější), a na passphrase - přístupové heslo.
Soukromý klíč můžeme zašifrovat pomocí hesla, takže případné odcizení souboru s klíčem bude útočníkovi k ničemu, když nebude znát heslo. Při použití klíče s heslem jsme potom na něj dotázání, v našem systému se privátní klíč rozšifruje a dále použije kam má. Pomocí ssh-add
jde zadat heslo pro náš klíč jednorázově pro otevřené sezení. Heslo u veřejného klíče nedává smysl. Heslo lze později měnit (pomocí volby -p
).
Heslo lze nezadávat - to dává smysl, pokud se je potřeba provádět automatizované ověřování identity bez interaktivity uživatele.
Veřejný klíč klienta je potřeba přidat na server do souboru ~/.ssh/authorized_keys
scp ~/.ssh/id_rsa.pub uzivatel@domena.cz:~ ssh uzivatel@domena.cz mkdir -p ~/.ssh cat ~/id_rsa.pub >> ~/.ssh/authorized_keys rm ../id_rsa.pub exit # alternativně ssh-copy-id -i ~/.ssh/id_rsa.pub uzivatel@domena.cz
ssh-keygen
- vygeneruje a uloží klíč do ~/.ssh
(ve windows je to c:/Users/myUserName/.ssh
). Vytvoří soubory id_rsa
a id_rsa.pub
(privátní a veřejný). Privátní je nutné si střežit jako oko v hlavě, veřejný rozdávat. Pokud existuje klíč (tzn. soubor id_rsa
) v adresáři $HOME/.ssh
, aplikace ho obvykle rozpoznají a automaticky použijí, takže k němu není potřeba specifikovat cestu.
Ověření funkčnosti např.
ssh uzivatel@domena.cz ls
Pokud klíč nemá standartní umístění
ssh -i cesta/ke/klici/klic uzivatel@domena.cz
Poté se klíč určuje počtem bitů, alespoň 2048 je dobrý nápad (čím budou výkonější počítače, délka se bude zvětšovat).