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.
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ětevstoupit
. - 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 naNe
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.