Secure Shell (SSH) je síťový protokol pro vytvoření zabezpečeného spojení mezi klientem a serverem. Pomocí SSH můžete spouštět příkazy na vzdálených počítačích, vytvářet tunely, dopředné porty a další.
SSH podporuje různé autentizační mechanismy. Dvěma nejběžnějšími jsou autentizace na základě hesla a veřejného klíče.
Autentizace pomocí veřejného klíče je založena na použití digitálních podpisů a je bezpečnější a pohodlnější než tradiční ověřování heslem.
Tento článek vysvětluje, jak generovat klíče SSH na systémech Ubuntu 20.04. Také vám ukážeme, jak nastavit ověřování založené na klíči SSH a připojit se ke vzdáleným serverům Linux bez zadávání hesla.
Vytváření klíčů SSH na Ubuntu #
Je pravděpodobné, že na klientském počítači Ubuntu již máte pár klíčů SSH. Pokud vygenerujete nový pár klíčů, starý bude přepsán. Chcete-li zkontrolovat, zda soubory klíčů existují, spusťte následující ls
příkaz:
ls -l ~/.ssh/id_*.pub
Pokud příkaz vrátí něco jako No such file or directory
nebo no matches found
, znamená to, že uživatel nemá klíče SSH a můžete pokračovat dalším krokem a vygenerovat pár klíčů SSH. V opačném případě, pokud máte pár klíčů SSH, můžete buď stávající, nebo zálohovat staré klíče a vygenerovat pár nový.
Chcete-li vygenerovat nový 4096bitový pár klíčů SSH s vaší e-mailovou adresou jako komentář, spusťte:
ssh-keygen -t rsa -b 4096 -C "[email protected]"
Budete vyzváni k zadání názvu souboru:
Enter file in which to save the key (/home/yourusername/.ssh/id_rsa):
Výchozí umístění a název souboru by měly být pro většinu uživatelů v pořádku. Stiskněte Enter
přijmout a pokračovat.
Dále budete požádáni o zadání bezpečné přístupové fráze. Přístupová fráze přidává další vrstvu zabezpečení. Pokud nastavíte přístupovou frázi, budete vyzváni k jejímu zadání pokaždé, když použijete klíč pro přihlášení ke vzdálenému počítači.
Pokud přístupovou frázi nastavit nechcete, stiskněte Enter
.
Enter passphrase (empty for no passphrase):
Celá interakce vypadá takto:
Chcete-li ověřit, že byl vygenerován nový pár klíčů SSH, zadejte:
ls ~/.ssh/id_*
/home/yourusername/.ssh/id_rsa /home/yourusername/.ssh/id_rsa.pub
A je to. Úspěšně jste vygenerovali pár klíčů SSH na klientském počítači Ubuntu.
Zkopírujte veřejný klíč na vzdálený server #
Nyní, když máte pár klíčů SSH, dalším krokem je zkopírovat veřejný klíč na vzdálený server, který chcete spravovat.
Nejjednodušší a doporučený způsob, jak zkopírovat veřejný klíč na server, je použít ssh-copy-id
nářadí. Na vašem místním počítači zadejte:
ssh-copy-id remote_username@server_ip_address
Budete vyzváni k zadání hesla vzdáleného uživatele:
remote_username@server_ip_address's password:
Jakmile je uživatel ověřen, veřejný klíč ~/.ssh/id_rsa.pub
bude připojen ke vzdálenému uživateli ~/.ssh/authorized_keys
soubor a připojení bude uzavřeno.
Number of key(s) added: 1
Now try logging into the machine, with: "ssh 'username@server_ip_address'"
and check to make sure that only the key(s) you wanted were added.
Pokud z nějakého důvodu ssh-copy-id
nástroj není na vašem místním počítači dostupný, zkopírujte veřejný klíč pomocí následujícího příkazu:
cat ~/.ssh/id_rsa.pub | ssh remote_username@server_ip_address "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"
Přihlaste se na svůj server pomocí klíčů SSH #
Po dokončení výše uvedených kroků byste měli být schopni se přihlásit ke vzdálenému serveru, aniž byste byli vyzváni k zadání hesla.
Chcete-li to otestovat, zkuste se přihlásit na svůj server přes SSH:
ssh remote_username@server_ip_address
Pokud jste pro soukromý klíč nenastavili přístupovou frázi, budete okamžitě přihlášeni. V opačném případě budete vyzváni k zadání přístupové fráze.
Deaktivace ověřování hesla SSH #
Vypnutí ověřování heslem přidá vašemu serveru další vrstvu zabezpečení.
Před deaktivací ověřování heslem SSH se ujistěte, že se můžete přihlásit na svůj server bez hesla a že uživatel, se kterým se přihlašujete, má oprávnění sudo.
Přihlaste se ke vzdálenému serveru:
ssh sudo_user@server_ip_address
Otevřete konfigurační soubor SSH pomocí textového editoru:
sudo nano /etc/ssh/sshd_config
Vyhledejte následující direktivy a upravte je následovně:
/etc/ssh/sshd_configPasswordAuthentication no
ChallengeResponseAuthentication no
UsePAM no
Po dokončení uložte soubor a restartujte službu SSH zadáním:
sudo systemctl restart ssh
V tomto okamžiku je ověřování na základě hesla zakázáno.