Obsah

Přihlašování na SSH pomocí klíče

Šifrování - kryptografie

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 klíče mnohem obtížněji prolomitelné hrubou silou než hesla.

Princip

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.

Generování klíče

Pokud nemám, vytvořit na klientovi adresář

mkdir ~/.ssh &&  chmod 700 ~/.ssh

Vygenerování 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 současně dostatečný je 2048
ssh-keygen -b 4096

Budeme dotázání kam klíč uložit (nabízené výchozí místo je nejvhodnější), a na passphrase - přístupové heslo.

Vygeneruje a uloží se 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.

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.

Osobní klíč by měl být zašifrovaný silným heslem, doporučuje se 10 až 30 znaků.

Umístění veřejného klíče na server

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

ověření funkčnosti

  ssh uzivatel@domena.cz ls

  # pokud klíč nemá standartní umístění 
  ssh -i cesta/ke/klici/klic uzivatel@domena.cz

Troubleshooting

https://help.ubuntu.com/community/SSH/OpenSSH/Keys#Troubleshooting

Možný problém v nastavených právech domovského a .ssh adresáře.

chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys && chmod go-w ~

Princip přihlašování klíčem patří k jinému princpitu kryptografie než přihlašování heslem. Klíče http://forum.root.cz/index.php?topic=9660.msg104717#msg104717