Úvod
Ověření pomocí veřejného klíče je zabezpečená metoda protokolování pomocí SSH. Namísto hesla postup používá k ověření pár kryptografických klíčů. Přestože použití silného hesla pomáhá předcházet útokům hrubou silou, ověřování pomocí veřejného klíče poskytuje kryptografickou sílu a automatické přihlašování bez hesla.
Tato příručka obsahuje podrobné pokyny, jak od začátku implementovat ověřování pomocí veřejného klíče.
Předpoklady
- Přístup k příkazovému řádku/terminálu s právy správce.
- SSH povoleno. Chcete-li zapnout SSH v systému Linux, postupujte podle našich pokynů:Ubuntu 18.04, Debian 9 nebo 10.
- Místní a vzdálený server.
Použití klíče SSH k ověření
Autentizace pomocí veřejného klíče SSH má čtyři kroky:
1. Vygenerujte soukromý a veřejný klíč, známý jako pár klíčů . Soukromý klíč zůstává na místním počítači.
2. Přidejte odpovídající veřejný klíč na server.
3. Server uloží a označí veřejný klíč jako schválený.
4. Server umožňuje přístup každému, kdo prokáže vlastnictví odpovídajícího soukromého klíče.
Model předpokládá, že soukromý klíč je zabezpečen. Přidání přístupové fráze k zašifrování soukromého klíče přidává vrstvu zabezpečení, která je dostatečně dobrá pro většinu případů založených na uživatelích. Pro účely automatizace platí software a postupy pro správu klíčů, protože soukromý klíč jinak zůstává nechráněný.
Generování páru klíčů SSH
Vygenerujte pár klíčů SSH na místním serveru pomocí OpenSSH. Níže jsou uvedeny základní pokyny pro Linux, macOS a Windows.
Linux a macOS
1. Otevřete terminál (CTRL +ALT +T ).
2. Zkontrolujte existující klíče pomocí:
ls -l ~/.ssh/id*
Pokud již klíče existují, výstup zobrazí obsah adresáře:
Generování nových klíčů ve výchozím nastavení přepíše ty aktuální. Zadáním nového názvu klíče je však uložíte do jiných souborů.
Pokud neexistují žádné klíče, výstup indikuje, že složka neexistuje:
3. Vytvořte adresář pomocí příkazu mkdir pro uložení nového páru klíčů:
mkdir ~/.ssh
4. Změňte oprávnění na 700:
chmod 700 ~/.ssh
5. Následující příkaz spustí generátor klíčů:
ssh-keygen
Výstup vytiskne zprávu indikující, že příkaz úspěšně proběhl. Dále se program zeptá, kam má soubor uložit:
Výchozí adresář a soubor pro úložiště klíčů je /home/
6. Nakonec zadejte přístupovou frázi pro zabezpečení klíče. Stiskněte Enter a na požádání heslo ještě jednou potvrďte. Heslo je vyžadováno při každém použití klíče k ověření.
7. Nakonec program vytiskne informace o tom, kde jsou klíče uloženy. Do konzole se navíc tiskne digitální a grafická reprezentace.
8. Zkontrolujte, zda jsou klíče v adresáři, kontrolou obsahu:
ls -l ~/.ssh/
Adresář nyní obsahuje dva soubory:
- id_rsa je soukromý klíč.
- id_rsa.pub je veřejný klíč.
Windows
1. Pomocí vyhledávacího pole systému Windows vyhledejte cmd a otevřete okno příkazového řádku.
2. Do výzvy zadejte:
ssh-keygen
Příkaz spustí program pro generování páru klíčů.
3. Pokud jste nastavili konkrétní umístění pro klíče, zadejte cestu nyní. V opačném případě stiskněte Enter pro uložení klíčů do výchozí cesty.
Pokud v tomto umístění existují klíče, výstup požádá o potvrzení přepsání. Zadejte Y potvrďte a stiskněte Enter pokračovat v nastavení.
4. Zadejte přístupovou frázi pro zašifrování soukromého klíče. Zadejte znovu stejné přístupové heslo a stiskněte Enter pro dokončení generování páru klíčů.
Konfigurace jednoho nebo více uživatelů SSH/SFTP pro váš klíč
Po vygenerování páru klíčů je dalším krokem konfigurace serveru pro uživatele SSH a SFTP pro klíč.
1. Na serveru zkontrolujte, zda ~/.ssh složka existuje:
ls -l ~/.ssh/
Pokud adresář neexistuje, vytvořte složku:
mkdir ~/.ssh
Dále změňte oprávnění pomocí:
chmod 700 ~/.ssh
2. Vytvořte soubor s názvem authorized_keys v ~/.ssh adresář:
touch authorized_keys
Změňte oprávnění:
chmod 600 ~/.ssh/authorized_keys
3. Dále otevřete authorized_keys soubor pomocí textového editoru. Zkopírujte obsah veřejného klíče do authorized_keys soubor. Pro více uživatelů a klíčů zkopírujte každý nový klíč na nový řádek. Uložte soubor a zavřete.
V Linuxu použijte k automatickému kopírování klíče tento příkaz:
ssh-copy-id <username>@<host>
Výstup zobrazuje počet klíčů automaticky zkopírovaných na server spolu s dalšími pokyny.
Pro přenos souborů přes SSH existuje několik řešení:
- Používejte SSHFS pro Linux, macOS nebo Windows
- Použijte RSync jako alternativu pro Linux.
Přihlášení
Po vygenerování a zkopírování klíčů se přihlaste k serveru z místního počítače pomocí následujícího příkazu:
ssh <username>@<host>
Příkaz vyvolá výzvu k zadání hesla soukromého klíče:
Nakonec zadejte heslo pro odemknutí klíče:
Po ověření vás příkaz přihlásí na server přes SSH.
Proč byste měli používat ověřování pomocí veřejného klíče s SSH?
Autentizace veřejným klíčem je bezpečnější a doporučený způsob připojení k SSH namísto běžného přihlašování heslem.
Některé výhody jsou:
- Pár klíčů SSH je obtížnější hacknout. Vzhledem k tomu, že většina klíčů SSH má délku alespoň 1024 bitů, což odpovídá heslu s 12 znaky, je připojení bezpečné. Chcete-li zabezpečení ještě zlepšit, zvyšte počet bitů při generování klíčů.
- Obsah klíčů je generován pomocí počítačového algoritmu, takže je obtížnější jej předvídat.
- Přístup má pouze počítač, kde je uložen soukromý klíč.
- Ověřování pomocí veřejného klíče nikdy serveru neukáže obsah soukromého klíče. V případě kompromitace serveru zůstane místní počítač v bezpečí.
- Přidané heslo k soukromému klíči přidává vícefaktorovou autentizaci.