SSH je protokol pro bezpečný přenos dat mezi různými počítači. Protokol SSH používá kryptografii veřejného klíče, která klientovi umožňuje ověřit server a v případě potřeby umožnit serveru autentizovat klienta bez zasílání hesel tam a zpět.
Kryptografie s veřejným klíčem používá pár veřejného a soukromého klíče. Soukromý klíč je uchováván v tajnosti a nikdy se nepřenáší po síti. Veřejný klíč může být distribuován všem peerům. Zprávy zašifrované pomocí veřejného klíče lze dešifrovat pouze pomocí soukromého klíče.
V době připojení SSH klient obdrží veřejný klíč serveru a ověří, zda se shoduje s uloženým veřejným klíčem v $HOME/.ssh/known_hosts . Pokud je tento test úspěšný a server nemá klientský veřejný klíč, je vyžadováno heslo. V opačném případě server odešle zprávu zašifrovanou klientským veřejným klíčem a pokud se klientovi podaří zprávu úspěšně dešifrovat pomocí svého soukromého klíče, spojení je navázáno.
Existují dvě verze protokolu SSH, verze 1 a 2. Šifrování je vázáno na verzi protokolu. Verze 1 trpí bezpečnostními chybami, kdykoli je to možné, měla by být použita verze 2. Většina SSH serverů používá verzi 2 protokolu kvůli omezením verze 1.
Existují 2 algoritmy pro šifrování párů veřejného a soukromého klíče, RSA a DSA .
Nastavení klienta
Protokol | Typ | Příkazový řádek |
---|---|---|
Verze 1 | RSA1 | -t rsa1 |
Verze 2 | RSA | -t rsa |
Verze 2 | DSA | -t dsa |
Po určení, jaký typ identity chcete/potřebujete, je prvním krokem vygenerování páru veřejného a soukromého klíče a zkopírování veřejné části na příslušné místo na straně serveru. V domovském adresáři uživatele na klientském počítači spusťte (měli byste mít adresář $HOME/.ssh, pokud jej nevytvoříte):
# ssh-keygen -t dsa -f ~/.ssh/id_dsa Generating public/private dsa key pair. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /root/.ssh/id_dsa. Your public key has been saved in /root/.ssh/id_dsa.pub. The key fingerprint is: SHA256:Qmd9iBOzx02n4DvDiBwRoGbGGC12X9i41QtbBxznHZc root@geeklab The key's randomart image is: +---[DSA 1024]----+ |.. ..*.=o+......| |.=.o o * %o*.ooE | |o.B . * X O.+. | | + = * * o | | + S = | | . o | | | | | | | +----[SHA256]-----+
Tady,
-t – používá se pro typ šifrování.
-f – kam uložit páry veřejného/soukromého klíče. V tomto případě adresář .ssh na domovské stránce uživatele.
Po provedení výše uvedeného příkazu budete požádáni o přístupové heslo. Nechte tuto část prázdnou, pokud nechcete zadávat tuto přístupovou frázi při každém připojení, stiskněte [enter]. Alternativně je možné nastavit ssh-agenta pro zpracování přístupových frází.
Výše uvedený příkaz vytvoří dva soubory v ~/.ssh:
# ls -lrt ~/.ssh/id_dsa* -rw-r--r--. 1 root root 602 Apr 12 14:45 /root/.ssh/id_dsa.pub -rw-------. 1 root root 668 Apr 12 14:45 /root/.ssh/id_dsa
Nastavení serveru
Soubor id_dsa.pub obsahuje veřejný klíč klienta, který je třeba připojit k souboru $HOME/.ssh/authorized_keys na serveru:
1. Zkopírujte soubor id_dsa.pub na server:
client$ scp ~/.ssh/id_dsa.pub user@server:~/.ssh/id_dsa.pub
Tentokrát budete samozřejmě muset zadat heslo pro uživatele.
2. Nyní se přihlaste na server a přejděte do adresáře .ssh na straně serveru
client$ ssh user@server server$ cd .ssh
3. Nyní přidejte veřejný klíč klienta do seznamu známých veřejných klíčů na serveru:
server$ cat id_dsa.pub >> authorized_keys server$ chmod 640 authorized_keys server$ rm id_dsa.pub server$ exit
to je vše.
Testování
Chcete-li otestovat, zda funguje ssh bez hesla, použijte níže uvedenou syntaxi:
$ ssh -l [user] [server] Last login: Tue Apr 12 15:20:07 2007 from 192.168.0.100
nebo alternativně
$ ssh [user]@[server] Last login: Tue Oct 12 15:20:07 2007 from 192.168.0.100
Pokud vás systém nepožádal o heslo, vše funguje správně.
Upozornění
Ujistěte se, že uchováváte svůj soukromý klíč (~/.ssh/id_dsa) v tajnosti! I když je bezpečné dát svůj veřejný klíč (~/.ssh/id_dsa.pub) světu, měli byste být velmi opatrní, aby nikdo jiný nemohl přečíst váš soukromý klíč (~/.ssh/id_dsa). Každý, kdo má přístup k soukromému klíči, se může přihlásit k libovolnému počítači, kde je nainstalován odpovídající veřejný klíč.