PuTTY a přihlášení pomocí klíčů
Pro bezpečné přihlášení do příkazového řádku (tj. textový režim) ke vzdálenému systému s Linuxem je obvykle nutné použít SSH (Secure Shell). Ve Windows 10 lze použít nástroj ssh
v příkazovém řádku (CMD.exe
) nebo lépe grafický nástroj PuTTY.
Obsah
SSH
SSH (Secure Shell) je náhrada za nešifrovaný telnet. Vymyslel jej v roce 1995 na Technické univerzitě v Helsinkách (kde studoval i Linus Torvalds) student Tatu Ylönen poté, co byla ve školní síti rutinně odchytávána hesla spolužáků při připojování k serverům pomocí nástroje telnet
. SSH využívá pro zabezpečení přenášených dat asymetrické šifrování a umožňuje použít asymetrickou šifru pro autentizaci (tj. využít veřejný a privátní klíč místo zadávání hesla).
Asymetrická šifra a autentizace
Asymetrická šifra používá dvojici klíčů. Jeden je obvykle nazýván privátní (utajený, chráněný heslovou frází) a druhý veřejný. Oba klíče (privátní a veřejný) je nutné generovat najednou, protože z jednoho nelze odvodit druhý. Pokud něco jedním klíčem zašifrujeme, rozšifrovat to lze jen druhým klíčem ze zmíněného páru. Pokud spolu asymetrickou šifrou komunikují dvě strany, mají obě k dispozici pár klíčů, takže dohromady jsou k dispozici 4 klíče. Pro bezpečnou komunikaci bezi stranou A (Alice) a B (Bob) se pak používá tzv. křížová šifra, kdy:
- strana A zašifruje zprávu svým privátním a veřejným klíčem strany B
- odešle zprávu
- strana B zprávu dešifruje svým privátním a veřejným klíčem strany A
Při tomto způsobu zabezpečení není nikdo schopen zprávu přečíst, změnit ani vytvořit za předpokladu, že nedojde ke kompromitaci (vyzrazení) privátních klíčů obou stran A a B. Je však nutné se ujistit, že veřejný klíč, který je použit ke šifrování/dešifrování opravdu patří protistraně (pomocí otisku klíče, podpisu v klíči nebo pomocí certifikační autority).
Instalace PuTTY
Ze stránky https://www.putty.org/ (odkaz vede na https://www.chiark.greenend.org.uk/) si stáhněte MSI soubor s PuTTY (64 nebo 32bitový podle vašich Windows) a nainstalujte. Společně s PuTTY jsou nainstalovány i pomocné nástroje (PuTTYgen, Pageant a další).
Použití PuTTY
Spusťte nástroj PuTTY (menu Start nebo klávesa Win - napište putty a klikněte). V dialogovém okně PuTTY uveďte název cílového stoje. Pro zjednodušení přihlašování lze uvést přihlašovací jméno před zavináč (nebude nutné ho po navázání zadávat, rovnou bude zobrazena otázka na heslo). Po kliknutí na levý horní roh okna PuTTY se objeví menu s možností změny některých nastavení u již navázaného spojení (Change settings...).
Kopírování v PuTTY probíhá podobně jako v Linuxu, tj. text se zkopíruje do schránky ihned po označení (není potřeba stisknout CTRL+c) a vkládání ze schránky (na místo kurzoru) se dělá pomocí klávesové zkratky SHIFT+Insert.
V PuTTY lze jednotlivé session ukládat včetně jejich (odlišného) nastavení. Nastavuje se obvykle:
- Window
- velikost okna (sloupce a řádky, PuTTY jejich počet ukazuje při změně velikosti okna)
- Lines of scrollback (počet zapamatovaných řádků po odrolování v terminálu nahoru - zadejte klidně sto tisíc)
- Window/Appearance
- Font (bitmapový Fixedsys nelze zvětšovat, zvětšovat lze např. vektorový Courier New, nastavte vhodnou velikost)
- Window/Behavior
- System menu appears on ALT-Space (změnu nastavení lze ve fullscreen snadno vyvolat klávesovou zkratkou)
- Full screen on Alt-Enter (znadné zvětšení terminálu přes celou obrazovku)
- Window/Translation
- Remote character set (v Linuxu je typicky použito UTF-8, ve starších instalacích to může být ISO-8859-2)
- Connection
- Seconds between keepalives (pokud se TCP spojení po nečinnosti přeruší, udržovat ho zasíláním prázdných zpráv, např. 30)
- Session
- Close window on exit (Only on clean exit - okno se automaticky zavře jen po odhlášení příkazem
logout
)
- Close window on exit (Only on clean exit - okno se automaticky zavře jen po odhlášení příkazem
- Session/Logging
- pokud se nedaří přihlášení pomocí klíče, lze zapisovat ladící hlášení o úvodním handshake mezi PuTTY a serverem do logu
Generování klíčů pomocí PuTTYgen
Spusťte nástroj PuTTYgen (menu Start nebo klávesa Win - napište putty a vyberte PuTTYgen). Ponechte výchozí typ klíče (RSA) i délku klíče (2048). Délku klíče můžete prodloužit na 4096, ale není to nutné (generování bude trvat déle, klíč bude robusnější). Klikněte na tlačítko Generate a v případě potřeby pohybujte myší v šedé prázdné horní části okna (generování entropie) - při pohybu bude postupovat zelený ukazatel.
Po skončení generování se v horní části okna zobrazí veřejný klíč. Vyplňte Key comment (např. muj.email@seznam.cz-20211117) a Key passphrase (heslová fráze chránící privátní klíč), kterou musíte ještě zopakovat do políčka Confirm passphrase. Uložte privátní klíč kliknutím na tlačítko Save private key. Uložit ho můžete kamkoliv, zvolte popisné jméno (např. PuTTY-privatni-klic-muj.email@seznam.cz-2021-11-17.ppk). Volitelně můžete uložit veřejný klíč (nejlépe pod stejným jménem s příponou .TXT). Veřejný klíč je součástí PPK souboru s privátním klíčem a lze ho proto zpětně do PuTTYgen načíst (tlačítko Load). Můžete ho v horní části okna i označit myší a zkopírovat do schránky (klíč je zakódován do tisknutelných ASCII znaků, aby se dal snadno přenášet) - stačí na něj kliknout pravým tlačítkem, dát Vybrat vše a stisknout CTRL+c.
Veřejný klíč na Linux server
Po vygenerování páru klíčů je možné je použít pro přihlášení na vzdálený server. K tomu je potřeba umístit veřejný klíč na vzdáleném serveru do souboru ~/.ssh/authorized_keys
(vlnka na začátku označuje domácí adresář uživatele, který se chce takto přihlašovat).
Spusťte program PuTTY a přihlašte se ke vzdálenému serveru. Přepněte se do svého domácího adresáře (příkaz cd
), vytvořte adresář .ssh
(příkaz mkdir
) a nastavte oprávnění pro vstup do adresáře jen pro vlastníka (příkaz chmod
):
cd mkdir .ssh chmod 700 .ssh
Spusťte textový editor nano
a veřejný klíč uložte do souboru ~/.ssh/authorized_keys
:
nano .ssh/authorized_keys
V PuTTY se obsah schránky vkládá na místo kurzoru kombinací kláves SHIFT+Insert. Ukončení editoru s uložením obsahu souboru proveďte kombinací CTRL+x (viz nápověda v dolní části okna) – na otázky v dolní části obrazovky odpovídejte klávesami Y (případně N) a jméno souboru potvrďte klávesou Enter. Klíč by měl být na jednom řádku, který může kvůli velikosti okna přetékat přes více řádků, ale nebude v něm nikde umístěn Enter (přechod na nový řádek). V souboru může být více veřejných klíčů, vždy jeden na jednom dlouhém řádku.
Nastavte restriktivní oprávnění (číst může jen vlastník):
chmod 600 .ssh/authorized_keys
Přihlášení pomocí klíčů
Nejjednodušší způsob přihlašování pomocí veřejného klíče (umístěného na cílovém vzdáleném serveru) je, že svůj privátní klíč načtete do aplikace Paegant, ze které si ho PuTTY při přihlašování načte. Výhodou tohoto postupu je, že do vypnutí počítače je klíč odemčený v aplikaci Paegant a můžete se opakovaně přihlašovat bez zadávání heslové fráze.
Spusťte program Pageant (klávesa Win - napište pageant a spusťte). Běžící Pageant se ukryje do System Tray (zobáček v pravé dolní části obrazovky u hodin). Na ikonu programu Pageant buď proveďte dvojklik a klikněte na tlačítko Add Key (nebo klikněte v System Tray na ikonu programu Pageant pravým tlačítkem myši a rovnou vyberte Add Key). Nalistujte uložený privátní klíč, potvrďte, vložte heslovou frázi chránící privátní klíč.
Spusťte program PuTTY a přihlašte se na vzdálený server, kde máte uložen veřejný klíč. Pokud je vše správně, nebudete dotázání na přihlašovací heslo.
Méně pohodlné je v PuTTY uvést v nastavení Connection - SSH - Auth - Private key for authenticatin, protože pak je potřeba odemykat privátní klíč heslovou frází při každém přihlášení (viz poslední obrázek výše).
Přihlášení klíčem nefunguje
Pokud přihlášení klíčem nefunguje, zkontrolujte oprávnění na adresáři .ssh a souboru ~/.ssh/authorized_keys (příkazy ls
, oprávnění jsou znaky drwx-
v levé části). Zkontrolujte, jestli někde není překlep a jestli veřejný klíč není rozdělen klávesou Enter na více řádků (v editoru při pohybu šipkou doprava nesmí kurzor ukázat, že před pravým krajem obrazovky přešel na nový řádek, případně první číslo výstupu příkazu wc
musí být jednička, resp. počet klíčů v souboru). Veřejné klíče lze vypsat příkazem cat
. V následujícím seznamu jsou příkazy uvedeny za znakem dolar ($) a jejich případné výstupy následují.
$ ls -ld .ssh drwx------. 2 milan.kerslager domain users 4096 17. lis 19.45 .ssh $ ls -l .ssh/authorized_keys -rw-------. 1 milan.kerslager domain users 410 17. lis 19.45 .ssh/authorized_keys $ cat .ssh/authorized_keys ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQEAlV/jUpgcyNmrw9bOn7OmUS0mc3GdGTRbPDMjLApeWItC11 TZO2NC96cgHXDl6V9w2ia3P79QBhWqK5DgeJfogJZLve7x2oSWBEUJufmm57DPN+FkwR5EtpRjyFibjy72PvQ88 gjJpJAuC0VRFNZ+SZDBkH681Y8xNLn7Qy248gYQ/DDkvhO55z6XEMk+33DHzoAI0iJOAsCAn8i4h8gP/GOrNyOl alHepnYrDL+bJYHsnmH1TXdabBrsuWEtK08cJUE6m4BUzG8h4GaMrw4rc3C+uQH/iKcC+z4TDsdwDXvD5yOrSv8 J9xWqCY13K/J+mNTG7yUB5ZO4tv5mapZqlQ== muj.email@seznam.cz-20211117 $ wc .ssh/authorized_keys 1 3 410 .ssh/authorized_keys