SSH je vynikající technologie, kterou lze využít k zakrytí VPN provozu, zabezpečení webových připojení a mnoha dalším účelům. Nicméně, opakované zadávání hesla při každém pokusu o připojení ke vzdálenému serveru může být otravné. Pro vývojáře, kteří se potřebují skriptem Bash hromadně připojovat k mnoha serverům, nebo pro kohokoliv, kdo už má plné zuby neustálého zadávání hesel, existuje elegantní řešení: SSH bez hesla. Princip spočívá ve vygenerování zabezpečeného SSH klíče na lokálním počítači a jeho sdílení jako formy autentizace na vzdáleném serveru. Tím je umožněno přihlášení komukoliv s daným klíčem, i bez znalosti hesla. V tomto článku si ukážeme, jak na to.
Co jsou to klíče SSH?
SSH klíč je specifický identifikační soubor, používaný v rámci protokolu Secure Shell. Primárním účelem těchto klíčů je poskytnout uživateli jedinečnou identitu a označit ho jako „důvěryhodného“ při procesu přihlašování. Klíče nejsou pouhé soubory pro ověření identity; SSH ve skutečnosti umožňuje autentizaci uživatele pomocí klíče místo hesla. To znamená, že místo povinného zadávání hesla při každém SSH přihlášení se použije SSH klíč.
SSH klíč je bezpečně uložen v Linuxu a odtud se lze bezheslově připojovat ke vzdálenému serveru dle potřeby.
Generování bezpečných SSH klíčů
Pro generování SSH klíče je nejprve potřeba mít SSH nástroje nainstalované a funkční. Nemusí se nutně jednat o aktivní SSH server, ale o základní nástroje a technologie SSH na lokálním počítači s Linuxem. Pokud si nejste jisti, jak SSH nastavit, nahlédněte do našeho návodu.
Klíče SSH generujte vždy na systému, ze kterého se budete připojovat, nikoliv na serveru, ke kterému se chcete připojit. Kopírování klíče z jiného systému na server nebude fungovat.
Pro zahájení procesu generování klíče otevřete terminál a zadejte následující příkaz:
ssh-keygen -t rsa
Po spuštění `ssh-keygen` se vypíše zpráva „Generování páru klíčů veřejného/soukromého rsa“. To znamená, že systém vytváří veřejný i soukromý klíč. Veřejný klíč může být volně sdílen, zatímco soukromý klíč by měl zůstat v tajnosti. Proto „soukromý“.
Klíče jsou standardně ukládány do adresáře `/home/uživatelské_jméno/.ssh/id_rsa`.
Upozornění: Adresář `~/.ssh` NEODSTRAŇUJTE, protože obsahuje vaše klíče. Jakákoliv manipulace s tímto adresářem může způsobit selhání SSH přihlášení a vygenerování varování a uzamčení.
Umístění SSH klíčů na vzdálený počítač
Jakmile máte klíče (veřejný i soukromý) vygenerovány, je nutné je zkopírovat na všechny systémy, z kterých se budete připojovat. Pokud tento proces neprovedete na všech počítačích, bude vyžadováno heslo pro přihlášení.
Pro přidání klíčů na vzdálený systém postupujte dle následujícího příkladu. Ujistěte se, že to provádíte z hostitelského počítače přes SSH:
ssh [email protected] mkdir -p .ssh
Tímto příkazem se vytvoří skrytý adresář `~/.ssh` v domovském adresáři vzdáleného počítače (uživatele použitého pro přihlášení). Do tohoto adresáře zkopírujeme nově vygenerované soubory klíčů SSH.
Pro zkopírování SSH klíčů použijte následující příkaz z hostitelského počítače na vzdálený počítač, který potřebuje klíče:
cat .ssh/id_rsa.pub | ssh [email protected] 'cat >> .ssh/authorized_keys'
Kopírování může trvat pár sekund dle rychlosti sítě. Po dokončení bude mít vzdálený server vygenerované klíče a umožní bezheslové přihlášení k hostitelskému počítači.
Zálohování SSH klíčů
SSH klíče jsou cenné a unikátní, a proto je jejich zálohování doporučený postup. Problém je, že uložení klíče na nezabezpečené místo by mohlo umožnit jeho zneužití. Jak tedy bezpečně zálohovat SSH klíče? Šifrováním.
Nejrychlejší a nejefektivnější cesta je využití GnuPG. Tento nástroj je součástí většiny Linuxových systémů a je základním kamenem při šifrování souborů. Pro instalaci GnuPG otevřete terminál a vyhledejte „gpg“ v manažeru balíčků. Měl by být snadno k nalezení i na méně známých distribucích Linuxu.
Po spuštění GPG proveďte proces šifrování kompresí adresáře `~/.ssh` do archivního souboru tar. Díky tomu nebudete muset šifrovat každý jednotlivý soubor zvlášť.
tar -czvf ssh-stuff.tar.gz /home/uživatelské_jméno/.ssh
Po kompresi spusťte samotný proces šifrování.
Poznámka: Před šifrováním vygenerujte v terminálu nový svazek klíčů pomocí `gpg`.
gpg -c ssh-stuff.tar.gz
Po šifrování GnuPG vytvoří soubor s příponou „.gpg“. Původní, nešifrovanou verzi souboru můžete smazat. Pro dešifrování zálohy použijte následující příkaz:
gpg ssh-stuff.tar.gz.gpg