GNU/Linux >> Znalost Linux >  >> Linux

Generujte SSH klíče pro přihlášení bez hesla v Ubuntu

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!


Linux
  1. 3 způsoby, jak konfiguruji SSH pro soukromí

  2. Jak nastavit klíče SSH

  3. Jak nastavit klíče SSH pro přihlášení k SSH „bez hesla“ na CentOS/RHEL

  1. Jak nastavit klíče SSH na Ubuntu 16.04

  2. Jak nastavit klíče SSH na Ubuntu 18.04

  3. Jak nastavit klíče SSH pro přihlášení k ssh „bez hesla“ v systému Linux

  1. Jak vygenerovat klíče SSH na Ubuntu 18.04

  2. Jak nastavit klíče SSH pro přihlášení pomocí „veřejného/soukromého klíče“ SSH v systému Linux

  3. Vygenerujte pár SSH pomocí AES-256-CBC