GNU/Linux >> Znalost Linux >  >> Linux

Jak nakonfigurovat ověřování na základě klíče SSH v systému Linux

Tato příručka vysvětluje, co je autentizace na základě klíče SSH, typy metod ověřování SSH a nakonec, jak nakonfigurovat ověřování pomocí klíče SSH v operačních systémech Linux a Unix.

Co je ověřování pomocí klíče SSH?

Jak všichni víme, Secure Shell , krátce SSH , je šifrovací síťový protokol, který vám umožňuje bezpečnou komunikaci/přístup ke vzdálenému systému přes nezabezpečenou síť, například internet.

Kdykoli odešlete data přes nezabezpečenou síť pomocí SSH, budou data automaticky zašifrována ve zdrojovém systému a dešifrována na straně cíle.

SSH poskytuje čtyři metody ověřování, konkrétně autentizaci na základě heslaověření na základě klíče ,Autentizace na základě hostitele aověření klávesnice .

Nejběžněji používané metody ověřování jsou autentizace na základě hesla a klíče.

Při autentizaci na základě hesla potřebujete pouze heslo uživatele vzdáleného systému. Pokud znáte heslo vzdáleného uživatele, můžete k příslušnému systému přistupovat pomocí "ssh [email protected]" příkaz.

Na druhou stranu při autentizaci na základě klíčů musíte vygenerovat páry klíčů SSH a nahrát veřejný klíč SSH do vzdáleného systému, abyste jej mohli komunikovat prostřednictvím SSH.

Každý pár klíčů SSH se skládá ze soukromého klíče a veřejného klíče. Soukromý klíč by měl být uchován v klientském systému a veřejný klíč by měl být nahrán do vzdálených systémů. Soukromý klíč byste neměli nikomu sdělovat .

Doufám, že máte základní představu o SSH a jeho metodách ověřování. Nyní nakonfigurujeme ověřování pomocí klíče SSH v Linuxu.

Nakonfigurujte ověřování pomocí klíče SSH v systému Linux

Pro účely této příručky budu používat systém Arch Linux jako místní systém a Ubuntu 18.04 LTS jako vzdálený systém.

Podrobnosti o místním systému:

  • OS :Arch Linux Desktop
  • IP adresa :192.168.225.37 /24

Podrobnosti o vzdáleném systému:

  • OS :Server Ubuntu 18.04 LTS
  • IP adresa :192.168.225.22/24

Vygenerujte pár klíčů SSH

Jak již bylo řečeno, v metodě ověřování založené na klíči SSH by měl být veřejný klíč nahrán do vzdáleného systému, ke kterému chcete přistupovat prostřednictvím SSH.

Veřejné klíče budou obvykle uloženy v souboru s názvem ~/.ssh/authorized_keys ve vzdálených systémech SSH.

Důležitá poznámka: Negenerujte páry klíčů jako root , protože tyto klíče by mohl používat pouze root. Vytvořte páry klíčů jako normální uživatel.

Nyní vytvoříme pár klíčů SSH v místním systému. Chcete-li to provést, spusťte ve svém místním klientském systému následující příkaz.

$ ssh-keygen

Výše uvedený příkaz vytvoří 2048bitový pár klíčů RSA. Zadejte heslo dvakrát. A co je důležitější, zapamatujte si svou přístupovou frázi. Budete to potřebovat později.

Ukázkový výstup:

Generating public/private rsa key pair.
Enter file in which to save the key (/home/sk/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/sk/.ssh/id_rsa.
Your public key has been saved in /home/sk/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:wYOgvdkBgMFydTMCUI3qZaUxvjs+p2287Tn4uaZ5KyE [email protected]
The key's randomart image is:
+---[RSA 2048]----+
|+=+*= + |
|o.o=.* = |
|.oo * o + |
|. = + . o |
|. o + . S |
| . E . |
| + o |
| +.*o+o |
| .o*=OO+ |
+----[SHA256]-----+

V případě, že jste již vytvořili pár klíčů, zobrazí se následující zpráva. Stačí napsat "y" pro přepsání stávajícího klíče.

/home/username/.ssh/id_rsa already exists.
Overwrite (y/n)?

Poznámka:

Mějte prosím na paměti, že heslo je volitelné . Pokud jej zadáte, budete požádáni o zadání hesla pokaždé, když se pokusíte o SSH do vzdáleného systému, pokud k uložení hesla nepoužíváte žádného agenta SSH.

Pokud nechcete přístupové heslo (i když není bezpečné), jednoduše stiskněte dvakrát klávesu ENTER, když budete požádáni o zadání přístupového hesla. Doporučuji vám však použít přístupovou frázi.

Použití ssh klíče bez hesla obecně není z bezpečnostního hlediska dobrý nápad. Měly by být omezeny na velmi specifické případy, jako jsou služby, které musí přistupovat ke vzdálenému systému bez zásahu uživatele (např. vzdálené zálohy pomocí rsync, unison, …).

Pokud již máte ssh klíč bez přístupové fráze v soukromém souboru ~/.ssh/id_rsa a chtěli aktualizovat klíč pomocí přístupové fráze, použijte následující příkaz:

$ ssh-keygen -p -f ~/.ssh/id_rsa

Ukázkový výstup:

Enter new passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved with the new passphrase.

Zkopírujte veřejný klíč SSH do vzdálených systémů

Klíčový pár jsme vytvořili v místním systému. Dále zkopírujte veřejný klíč SSH na vzdálený server SSH pomocí příkazu:

$ ssh-copy-id [email protected]

Zde zkopíruji veřejný klíč místního systému (Arch Linux) do vzdáleného systému (v mém případě Ubuntu 18.04 LTS).

Technicky vzato, výše uvedený příkaz zkopíruje obsah klíče ~/.ssh/id_rsa.pub místního systému do ~/.ssh/authorized_keys vzdáleného systému soubor. Průhledná? Dobře.

Zadejte ano pokračujte v připojování ke vzdálenému serveru SSH a poté zadejte heslo sudo (nebo uživatele root) vzdáleného systému.

/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
[email protected]'s password:

Number of key(s) added: 1

Now try logging into the machine, with: "ssh '[email protected]'"
and check to make sure that only the key(s) you wanted were added.

Pokud jste již klíč zkopírovali, ale chcete jej aktualizovat pomocí nové přístupové fráze, použijte -f možnost přepsat stávající klíč, jak je uvedeno níže.

$ ssh-copy-id -f [email protected]

Úspěšně jsme přidali veřejný klíč SSH místního systému do vzdáleného systému.

Nyní můžeme zcela zakázat autentizaci na základě hesla ve vzdáleném systému. Protože jsme již nakonfigurovali autentizaci založenou na klíčích, takže již nepotřebujeme ověřování na základě hesla.

Zakázat ověřování na základě hesla SSH ve vzdáleném systému

Jako uživatel root nebo sudo musíte provést následující příkazy.

Chcete-li deaktivovat ověřování na základě hesla, přejděte do konzoly vzdáleného systému a upravte /etc/ssh/sshd_config konfigurační soubor pomocí libovolného editoru:

$ sudo vi /etc/ssh/sshd_config

Najděte následující řádek. Odkomentujte jej a nastavte jeho hodnotu jako ne .

PasswordAuthentication no

Restartujte službu ssh, aby se změny projevily.

$ sudo systemctl restart sshd

Přístup ke vzdálenému systému z místního systému

Přejděte do místního systému a SSH na váš vzdálený server pomocí příkazu:

$ ssh [email protected]

Zadejte heslo pro přihlášení do vzdáleného systému.

Ukázkový výstup:

Enter passphrase for key '/home/sk/.ssh/id_rsa': 
Last login: Mon Jul 9 09:59:51 2018 from 192.168.225.37
[email protected]:~$

Jak jste si všimli, přihlásili jsme se k účtu vzdáleného systému pomocí přístupové fráze, kterou jsme dříve vytvořili pomocí ssh-keygen bez použití skutečného hesla uživatelského účtu.

Pokud se pokusíte o ssh z jiného klientského systému, zobrazí se tato chybová zpráva. Řekněme například, že jsem se pokusil SSH do svého systému Ubuntu z mého CentOS pomocí příkazu:

$ ssh [email protected]

Ukázkový výstup:

The authenticity of host '192.168.225.22 (192.168.225.22)' can't be established.
ECDSA key fingerprint is 67:fc:69:b7:d4:4d:fd:6e:38:44:a8:2f:08:ed:f4:21.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.225.22' (ECDSA) to the list of known hosts.
Permission denied (publickey).

Jak vidíte ve výše uvedeném výstupu, nebylo mi povoleno SSH do mých vzdálených systémů Ubuntu 18.04 z jiných systémů.

Přidání dalších klíčů klientského systému na server SSH

Toto je velmi důležité. Jak jsem již řekl, nemůžete přistupovat ke vzdálenému systému přes SSH, kromě toho, který jste nakonfigurovali (v našem případě je to Ubuntu).

Chci udělit oprávnění více klientům pro přístup ke vzdálenému serveru SSH. Co bych měl dělat? Jednoduchý. Musíte vygenerovat pár klíčů SSH ve všech svých klientských systémech a zkopírovat veřejný klíč ssh ručně na vzdálený server, ke kterému chcete přistupovat přes SSH.

Chcete-li vytvořit pár klíčů SSH na svých klientských systémech, spusťte:

$ ssh-keygen

Zadejte heslo dvakrát. Po vygenerování páru klíčů ručně zkopírujte veřejný klíč ssh (nikoli soukromý klíč) na vzdálený server.

Zobrazte klíč pub pomocí příkazu:

$ cat ~/.ssh/id_rsa.pub

Měli byste vidět výstup něco jako níže.

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCt3a9tIeK5rPx9p74/KjEVXa6/OODyRp0QLS/sLp8W6iTxFL+UgALZlupVNgFjvRR5luJ9dLHWwc+d4umavAWz708e6Na9ftEPQtC28rTFsHwmyLKvLkzcGkC5+A0NdbiDZLaK3K3wgq1jzYYKT5k+IaNS6vtrx5LDObcPNPEBDt4vTixQ7GZHrDUUk5586IKeFfwMCWguHveTN7ykmo2EyL2rV7TmYq+eY2ZqqcsoK0fzXMK7iifGXVmuqTkAmZLGZK8a3bPb6VZd7KFum3Ezbu4BXZGp7FVhnOMgau2kYeOH/ItKPzpCAn+dg3NAAziCCxnII9b4nSSGz3mMY4Y7 [email protected]

Zkopírujte celý obsah (přes USB disk nebo jakékoli médium) a přejděte do konzoly vzdáleného serveru. Vytvořte adresář s názvem ssh v domovském adresáři, jak je uvedeno níže.

$ mkdir -p ~/.ssh

Dále připojte pub klíč vašeho klientského systému, který jste vygenerovali v předchozím kroku, do souboru s názvem "~/.ssh/authorized_keys" :

echo {Your_public_key_contents_here} >> ~/.ssh/authorized_keys

Restartujte službu ssh na vzdáleném systému. Nyní budete moci přistupovat k serveru pomocí SSH z nového klienta.

Pokud se ruční přidání ssh pubkey zdá obtížné, povolte dočasně ověřování na základě hesla ve vzdáleném systému a zkopírujte klíč pomocí příkazu "ssh-copy-id" z místního systému a nakonec ověřování na základě hesla vypněte.

Související čtení:

  • Jak nastavit vícefaktorové ověřování pro SSH v systému Linux
  • Zjistit, zda uživatel používá ověřování SSH na základě hesla nebo klíče
  • SSLH – Sdílejte stejný port pro HTTPS a SSH
  • ScanSSH – rychlý server SSH a otevřený skener proxy

Závěr

Autentizace založená na klíči SSH poskytuje další vrstvu ochrany před útoky hrubou silou. Jak vidíte, konfigurace ověřování na základě klíče také není tak obtížné. Je to jedna z doporučených metod, jak udržet vaše linuxové servery v bezpečí.


Linux
  1. Jak nakonfigurovat klíče SSH pomocí cPanel

  2. Jak změnit port SSH v Linuxu

  3. Konfigurace klíčů SSH na systému Debian 9 – jak na to?

  1. Jak vygenerovat klíč SSH ve Windows 10

  2. Jak zakázat ověřování hesla SSH na Linux VPS

  3. Jak funguje SSH bez hesla v systému Linux / UNIX

  1. Jak vytvořit alias SSH v Linuxu

  2. Jak zjistit, zda uživatel používá ověřování SSH na základě hesla nebo klíče v systému Linux

  3. Jak nakonfigurovat X11 Forwarding pomocí SSH v Linuxu