PuTTY a přihlášení pomocí klíčů

Z Milan Kerslager
Verze z 17. 11. 2021, 19:40, kterou vytvořil Milan.Kerslager (diskuse | příspěvky) (Použití PuTTY: kopírování)
(rozdíl) ← Starší verze | zobrazit aktuální verzi (rozdíl) | Novější verze → (rozdíl)
Přejít na: navigace, hledání

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.

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:

  1. strana A zašifruje zprávu svým privátním a veřejným klíčem strany B
  2. odešle zprávu
  3. 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)
  • 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

Posloupnost příkazů v terminálu

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