Jak přidat klíče SSH na Ubuntu 20.04

Nastavte si bezpečné přihlášení bez hesla ke vzdálenému serveru Ubuntu pomocí klíčů SSH

SSH je zabezpečený síťový protokol klient-server, který pomáhá klientskému počítači připojit se a komunikovat se vzdáleným serverem. Připojení SSH zajišťuje, že příkazy zadané v terminálu jsou odesílány na vzdálený server prostřednictvím šifrovaného kanálu.

Pro připojení ke vzdálenému serveru se používají dva typy autentizačních mechanismů, autentizace na základě hesla (náchylná k útokům hrubou silou) a autentizace založená na klíčích SSH (která je velmi bezpečná).

Při ověřování založeném na klíči SSH se na klientském počítači vygeneruje pár klíčů, který se nazývá veřejný klíč a soukromý klíč. Kopie tohoto veřejného klíče je zpřístupněna na vzdáleném serveru. Když klient odešle serveru požadavek na připojení, server vygeneruje náhodný řetězec a zašifruje jej pomocí veřejného klíče. Tento řetězec lze dešifrovat pouze pomocí soukromého klíče dostupného na klientském počítači. Tato metoda zajišťuje, že k serveru mohou přistupovat pouze klienti obsahující soukromý klíč.

V této příručce uvidíme, jak nastavit klíče SSH na serveru Ubuntu 20.04 LTS.

Zjistěte, zda máte v počítači existující klíč SSH

Chcete-li zkontrolovat, zda již ve vašem počítači existuje pár klíčů SSH, zadejte tento příkaz do terminálu.

ls -l ~/.ssh/id_*.pub

Pokud se výše uvedený příkaz vrátí žádný takový soubor nebo adresář nebo nenalezeny žádné shody, pak to znamená, že pár klíčů SSH neexistuje.

Pokud máte existující pár klíčů SSH, můžete buď použít stejný pár klíčů pro přístup ke dvěma vzdáleným serverům, nebo můžete také vytvořit jiný pár klíčů s jiným názvem. Přejdeme k dalšímu kroku a uvidíme, jak vygenerovat klíče SSH pro oba případy.

Vytváření klíčů SSH na klientském počítači

Chcete-li na svém počítači vygenerovat nový pár klíčů SSH, zadejte příkaz, jak je uvedeno níže.

ssh-keygen

Ve výchozím nastavení mají klíče SSH 2048 bitů. Pro lepší zabezpečení, pokud chcete generovat SSH klíče s vyššími bity, použijte následující příkaz.

ssh-keygen -b 4096

Pokud příkaz proběhne úspěšně, zobrazí se na obrazovce následující zpráva.

generování páru klíčů veřejný/soukromý rsa. Zadejte soubor, do kterého se má klíč uložit (/home/harshit/.ssh/id_rsa):

Nyní, pokud na svém počítači nemáte žádný existující pár klíčů SSH, jednoduše stiskněte Vstupte, ale pokud máte existující klíč SSH, uložte klíč s jiným názvem souboru, jak je uvedeno níže.

Zadejte soubor, do kterého se má klíč uložit (/home/vaše_jméno/.ssh/id_rsa): /home/vaše_jméno/.ssh/id_rsa_xxx

Nahradit xxx na konec názvu souboru s příslušným názvem, jak je znázorněno níže, a stiskněte Vstupte.

Zadejte soubor, do kterého se má klíč uložit (/home/vaše_jméno/.ssh/id_rsa): /home/vaše_jméno/.ssh/id_rsa_client_1

Další výzva vás požádá o zadání přístupového hesla libovolné délky, což zajistí dvouúrovňové zabezpečení vašeho zařízení.

Zadejte přístupovou frázi (prázdná, pokud není přístupová fráze): Zadejte znovu stejnou přístupovou frázi:

Zadáním této přístupové fráze zajistíte, že i když osoba získá přístup k vašemu soukromému klíči, nebude mít bez této přístupové fráze přístup k vašemu vzdálenému serveru.

Po dokončení celého procesu se na obrazovce objeví následující zpráva.

ssh-keygen -b 4096 Po dokončení celého procesu generování klíče SSH se na obrazovce objeví následující zpráva.

Klíče SSH byly vygenerovány ve vašem systému. Nyní je čas zkopírovat veřejný klíč na vzdálený server.

Kopírování veřejného klíče na vzdálený server Ubuntu

Nejjednodušší a nejrychlejší způsob kopírování veřejného klíče na vzdálený server je pomocí ssh-copy-id užitečnost. Pokud však tento nástroj není na vašem počítači z nějakého důvodu k dispozici, můžete také použít jiné metody uvedené v této části.

Pomocí nástroje ssh-copy-id

The ssh-copy-id nástroj je standardně dostupný na vašem počítači Ubuntu, který zkopíruje veřejný klíč z vašeho zařízení do příslušného adresáře vašeho vzdáleného počítače Ubuntu.

Chcete-li zkopírovat veřejný klíč ssh, jednoduše zadejte příkaz do terminálu, jak je znázorněno níže.

ssh-copy-id uživatelské jméno@hostname

Nahradit uživatelské jméno a název hostitele ve výše uvedeném příkazu s uživatelským jménem a názvem hostitele vašeho serveru.

Pokud se k hostiteli připojujete poprvé, zobrazí se na vašem terminálu následující zpráva, zadejte Ano a stiskněte Vstupte.

Autentičnost hostitele '172.105.XX.XX (172.105.XX.XX)' nelze zjistit. Otisk klíče ECDSA je xx:xx:xx:xx:77:fe:73:xx:xx:55:00:ad:d6:xx:xx:xx. Opravdu chcete pokračovat v připojení (ano/ne)? Ano

Nyní ssh-copy-id obslužný program vyhledá soubor s názvem id_rsa.pub který obsahuje veřejný SSH klíč. Po dokončení procesu skenování vás vyzve k zadání hesla vašeho vzdáleného serveru, jak je uvedeno níže. Zadejte heslo a stiskněte Vstupte.

/usr/bin/ssh-copy-id: INFO: pokus o přihlášení pomocí nového klíče (klíčů), pro odfiltrování všech, které jsou již nainstalovány /usr/bin/ssh-copy-id: INFO: 1 klíč (klíčů) ) zbývá nainstalovat -- pokud se nyní zobrazí výzva, je třeba nainstalovat nové klíče [email protected]: heslo:

Po přidání klíče se na vašem terminálu objeví následující zpráva jako výstup.

Počet přidaných klíčů: 1 Nyní se zkuste přihlásit do počítače pomocí: "ssh '[email protected]'" a zkontrolujte, zda byly přidány pouze požadované klíče.

V případě, že máte na klientském počítači více klíčů SSH, zkopírujte příslušný veřejný klíč do vzdáleného počítače zadáním příkazu ve vzoru uvedeném níže.

ssh-copy-id -i id_rsa_xxx.pub uživatelské jméno@hostitel

💡 Tip

Při psaní do terminálu nezapomeňte na konec názvu souboru dát .pub.

Kopírování veřejného klíče metodou potrubí

Zadejte následující příkaz do terminálu if ssh-copy-id nástroj není k dispozici. Tento příkaz se může zdát trochu delší, ale funguje správně.

kočka ~/.ssh/id_rsa.pub | ssh remote_username@server_ip_address "mkdir -p ~/.ssh && touch ~/.ssh/authorized_keys && chmod -R go= ~/.ssh && cat >> ~/.ssh/authorized_keys"

Nahradit vzdálené_uživatelské jméno a server_ip_address s vaším uživatelským jménem a IP adresou.

Pokud máte v počítači k dispozici více klíčů SSH, vyměňte je id_rsa.pub se souborem veřejného klíče SSH dle vašeho výběru. Například, id_rsa_client_1.pub.

Po zobrazení výzvy zadejte heslo vzdáleného uživatele a stiskněte Vstupte.

Heslo uživatele [email protected]:

Jakmile zadáte heslo, id_rsa.pub soubor bude zkopírován do autorizované_klíče soubor vzdáleného serveru.

Ruční zkopírování veřejného klíče

Tuto metodu použijte, když nemáte přístup ke vzdálenému systému prostřednictvím ověřování heslem.

Otevři id_rsa.pub soubor pomocí kočka příkaz v terminálu. Můžete jej otevřít i z textového editoru, účelem je pouze zkopírovat obsah souboru.

kočka ~/.ssh/id_rsa.pub

Obsah souboru bude vypadat následovně.

SSH-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQComjFtuHvHQ67uf3RXg2wgK4EtxBvBvLCtlc4chG + nJ1cbuJjJ6G8az4xsRN1Q7hrV4dYR81Tk3gRApiMdGcMvInU3Vb7Wq3nh9GS4xnLRH1wvb149wogum2MycIES69Xh0cib + VvJyZ + dGO8zRNT64 + SvfiecRV0llnBGWDRqrIGtMHJkKz7VDKuSyzDit / Ck1NFXxC6Plw3cEMOhWHycm8bnSHSoVpr95ySxxnokX4 / 9iAlvOovxTpMpmDaDvuHKgHxcsOv9Q4sz // 6Hy / 65 + + qqmiuLyuIQXjDiiYTjHTx VNi6S0iMLoN6XgDLp0MfG6kLvZ0Z + csqdvIDQfMuH your_name @ your_PC

Nyní se přihlaste ke svému vzdálenému serveru a vložte zkopírovaný obsah pomocí příkazu uvedeného níže. Nahradit nad_řetězcem se zkopírovaným obsahem.

echo above_string >> ~/.ssh/authorized_keys

Konfigurace více klíčů SSH (volitelné)

Tento krok je pro lidi, kteří mají na svém klientském počítači nastaveno více klíčů SSH. Pokud máte nastaven pouze jeden klíč SSH, tuto část přeskočte.

Pro správu více klíčů SSH nyní vytvoříme a config soubor uvnitř .ssh adresář pomocí příkazu uvedeného níže.

cd ~/.ssh vim config

Typ i pro vstup do příkazového režimu a zadání podrobností o více hostitelích, jak ukazuje následující příklad:

Hostitelský vzdálený-ubuntu-server Název hostitele 172.105.XX.XX Uživatelský kořenový IdentityFile ~/.ssh/id_rsa_client_1 Hostitelský vzdálený-ubuntu-server Název hostitele 172.106.XX.XX Uživatelský kořenový IdentityFile ~/.ssh/id_rsa_client_2

Podobně zadejte podrobnosti o dalších vzdálených serverech a jejich klíčích. Po dokončení procesu stiskněte Esc a :wq uložit a ukončit.

Nyní jsou následující procesy stejné pro oba mající jeden nebo více klíčů SSH na klientském počítači.

Přihlaste se ke vzdálenému serveru pomocí klíčů SSH

Jakmile je proces kopírování vašeho veřejného klíče dokončen, přihlaste se ke vzdálenému serveru zadáním příkazu, jak je uvedeno níže.

ssh vzdálené_uživatelské_jméno@adresa_ip_serveru

Pokud jste heslo zadali při generování páru klíčů, budete vyzváni k jeho zadání. Po dokončení procesu ověřování se otevře nová relace.

Nyní jste úspěšně nakonfigurovali ověřování pomocí klíčů SSH na vašem vzdáleném serveru. Ale autentizace na základě hesla je na vašem serveru stále aktivní, to znamená, že váš vzdálený server je stále náchylný k útokům hrubou silou.

Nyní tedy zcela deaktivujeme mechanismus přihlašování na základě hesla z našeho vzdáleného serveru.

Zakázat mechanismus přihlášení založený na hesle

Než provedete jakékoli změny, ujistěte se, že uživatel root nebo jakýkoli uživatel s povoleným sudo pro váš vzdálený účet má přístup k vašemu serveru pomocí ověřovacího systému založeného na klíči SSH. Tento krok zcela uzamkne nebo zakáže přihlášení založené na hesle, takže je důležité, aby alespoň jeden uživatel root měl přístup k serveru prostřednictvím klíče SSH.

Přihlaste se ke svému vzdálenému serveru Ubuntu a zadejte příkaz uvedený níže.

sudo vim /etc/ssh/sshd_config
  • lis Esc, / a zadejte „Ověření hesla“ a stiskněte vstoupit.
  • Nyní stiskněte i a změňte hodnotu „PasswordAuthentication yes“ na „PasswordAuthentication no“.
  • lis Esc a zopakujte výše uvedený proces, abyste našli „ChallengeResponseAuthentication“, „UsePAM“ a změňte jejich hodnoty na Ne také.
PasswordAuthentication no ChallengeResponseAuthentication no UsePAM no

Jakmile jsou všechny hodnoty nastaveny na Ne, lis Esc, typ :wq a udeřit vstoupit.

Pro aktivaci všech změn restartujte ssh službu pomocí příkazu níže.

sudo systemctl restart ssh

Nyní otevřete nové okno terminálu na vašem počítači a před uzavřením aktuální relace ověřte, že vaše ověřování klíčem SSH funguje správně.

Po dokončení procesu ověření zavřete všechny spuštěné relace.

Nyní jsme úspěšně nakonfigurovali ověřování založené na klíči SSH na našem serveru Ubuntu 20.04. Nyní se nikdo nemůže přihlásit k vašemu serveru pomocí přihlašovacího mechanismu založeného na hesle.