SSH (Secure Shell) je šifrovací síťový protokol, který se používá k navazování zabezpečeného spojení mezi vzdáleným klientem a serverem pomocí TCP protokol pro zabezpečení a spolehlivost.
Připojení založená na SSH podporují různé metody ověřování, některé z nich jsou :
- Ověřování na základě hesla
- Ověřování založené na klíči
Ve výchozím nastavení se při vytváření nového připojení SSH mezi dvěma počítači použije ověřování založené na hesle. Pokud se však na server přihlašujete často ze stejného klienta, může být těžkopádné a nepříjemné zadávat heslo pokaždé, když se k serveru přihlašujete.
Tento výukový program představuje další alternativní ověřování pro přihlášení na vzdálený server pomocí veřejných klíčů .
Podívejme se, jak to můžeme nastavit na našich konkrétních klientských a serverových počítačích, které často používáme, abychom se z tohoto počítače mohli automaticky a bezpečně přihlásit!
Zkontrolujte přítomnost stávajících klíčů SSH na klientském počítači
První část se zabývá generováním páru soukromých a veřejných klíčů v klientovi stroj. Veřejný klíč je později zkopírován na server a slouží k ověření.
Před nastavením jakéhokoli klíče SSH se ujistěte, že pro tuto kombinaci klient-server již neexistují žádné existující klíče.
Spusťte tento bash skript, abyste zkontrolovali, zda soubor existuje (můžete to také zadat přímo na terminálu)
if test -f ~/.ssh/id_*.pub; then echo "Found" else echo "Not Found" fi
Pokud se zobrazí „Nenalezeno“, znamená to, že žádný takový soubor neexistuje a jsme připraveni vytvořit nový klíč pro toto připojení.
V opačném případě můžete přímo použít stávající klávesy a přeskočit další krok. Pokud však staré klíče používat nechcete, můžete staré klíče odebrat a vygenerovat nové podle následujícího kroku.
Vygenerujte nový pár klíčů SSH pro počítače klient-server
Níže uvedený příkaz vygeneruje nové 4096 bity páru klíčů SSH s vaším ID (může být cokoliv identifikovatelné!) jako komentář:
ssh-keygen -t rsa -b 4096 -C "[email protected]"
Po konfiguraci umístění klíče a přístupových frází spuštěním tohoto příkazu si nyní necháme vygenerovat nový klíč spolu s otiskem klíče.
Nyní pomocí ls
zkontrolujeme, zda tam skutečně existuje soukromý veřejný klíč .
ls ~/.ssh/id_*
Měli byste získat níže uvedený výstup :
/root/.ssh/id_rsa /root/.ssh/id_rsa.pub
To znamená, že id_rsa
je váš soukromý klíč a id_rsa.pub
je váš veřejný klíč.
POZNÁMKA :Nikdy sdílet svůj soukromý klíč mezi počítači. To je důvod, proč máte veřejný klíč. Můžeme tedy zkopírovat stejný veřejný klíč na více serverů do ssh
na, při zachování zvýšené bezpečnosti pomocí soukromého klíče na vašem místním počítači.
Zkopírujte veřejný klíč na server
Protože máme svůj pár klíčů SSH na našem klientovi, abychom se mohli přihlásit ke vzdálenému serveru, musíme tam zkopírovat veřejný klíč.
Můžeme použít scp
kopírovat soubory na náš server, ale existuje lepší alternativa pro ssh
pomocí ssh-copy-id
.
Můžete nainstalovat ssh-copy-id
pomocí správce balíčků, pokud není k dispozici.
ssh-copy-id server_username@server_ip
Po zadání hesla uživatelského jména serveru budeme nyní ověřeni pro přihlášení k serveru pomocí veřejných klíčů.
Výstup bude podobný tomuto:
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/client_user/.ssh/id_rsa.pub" /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys SERVER_USER@SERVER_IP's password: Number of key(s) added: 1 Now try logging into the machine, with: "ssh 'SERVER_USER@SERVER_IP'" and check to make sure that only the key(s) you wanted were added.
To znamená, že můžeme použít ssh
na tento konkrétní počítač od našeho klienta s extra autentizací na základě klíče!
Chcete-li to otestovat, zkuste ssh
nyní na server!
ssh server_user@server_ip
Ladění potenciálních problémů
Někteří z vás však mohou zobrazit výzvu k zadání hesla spolu s přístupovou frází založenou na klíčích! Co se děje?
Možný důvod je podrobně popsán zde. Zdá se, že možná nemáme správná oprávnění k našemu ~/.ssh
adresář na vzdáleném serveru . Obsah HOME adresář ~
, ~/.ssh
adresář a ~/.ssh/authorized_keys
soubor musí být zapisovatelný pouze námi. V opačném případě cítí, že přístup mohou získat jiní uživatelé, a proto je také požadováno heslo.
Nejprve zkontrolujeme oprávnění našeho domovského adresáře.
Protože můžeme pouze zapisovat, nemusíme pro tento adresář měnit oprávnění. Podobně se podívejte na režimy a změňte režim pomocí chmod
.
Změňme oprávnění k těmto souborům a adresářům pomocí chmod -R ~/.ssh 700
rekurzivně.
Nyní otestujte, zda to funguje.
Ladění potenciálních problémů – část 2
Pokud se vám to stále nedaří zprovoznit, toto vlákno uvádí, že některé možnosti v konfiguračním souboru ssh mohou být zakázány.
Zkontrolujte /etc/ssh/sshd_config
na serveru abyste zajistili, že RSAAuthentication
, PubkeyAuthentication
a UsePAM
možnosti nejsou zakázány.
Také se ujistěte, že jste explicitně nastavili PasswordAuthentication no
v konfiguraci zakázat ověřování na základě hesla pro našeho uživatele.
Jak vidíte, u mě to tak skutečně bylo! PubKeyAuthentication
byl také deaktivován, a proto mě to vyzvalo k zadání hesla, protože relace toto nepoužívala jako primární režim ověřování!
Odkomentoval jsem tento řádek a restartoval jsem ssh
aplikujte změny.
sudo systemctl restart ssh
Díky tomu mi konečně fungovalo ověřování bez hesla! Doufejme, že jste do této doby také našli řešení.
Konečně jsme nakonfigurovali ssh pracovat bez hesla!
Závěr
V tomto tutoriálu jsme vám ukázali, jak můžete nastavit ssh
autentizační metoda založená na veřejném klíči a přihlášení k serveru bez hesla!