GNU/Linux >> Znalost Linux >  >> Linux

Použití ssh-keygen a sdílení pro ověřování založené na klíčích v Linuxu

Pokud jste někdy pracovali jako sysadmin (nebo chcete v budoucnu), musíte dobře ovládat SSH. Nebudu vás seznamovat s obecným konceptem, protože to již bylo vysvětleno zde v části Enable Sysadmin. Chci se však podívat na potenciálně lepší způsob použití. SSH je nejpoužívanější protokol pro vzdálený přístup na světě. Proto dává smysl, že bychom se měli snažit jeho používání co nejvíce zlepšit.

Během svého působení jako technik podpory jsem používal SSH ke vzdálenému připojení k tisícům zákaznických strojů a jsem si jistý, že ostatní mají podobnou zkušenost. S tradiční autentizací SSH potřebujete uživatelské jméno a heslo pro účet, ke kterému se chcete přihlásit, pokaždé, když chcete získat přístup do systému. Nezní to tak špatně, že? Ale co se stane, když potřebujete pravidelně přeskakovat tam a zpět mezi systémy? Nebo co když vaše povinnosti zahrnují vzdálené relace ke stejným 100 systémům po celý den za účelem zdravotních kontrol? Existuje další způsob, jak provést přihlášení, as trochou počáteční investice to může být celkově mnohem efektivnější.

Proces vytvrzování

Objektivně platí, že šifrovaný klíč je pro ty, kdo mají nekalé úmysly, mnohem těžší cíl než uživatelské jméno a heslo. Ačkoli to může vyžadovat trochu učení, vytvoření a používání autentizace založené na klíči SSH stojí za investici pro každého správce systému.

Zde je návod, jak to funguje. Vygenerujete veřejný klíč a odpovídající soukromý klíč. Soubor soukromého klíče funguje jako heslo a měl by být uchováván v bezpečí. Veřejný klíč se však zkopíruje do cílových systémů, ke kterým se pravidelně připojujete. Veřejný klíč umístíte do domovského adresáře účtu na cílovém serveru. Když se pokusíte přihlásit, klíče jsou ověřeny a přístup je udělen.

Nyní to můžete udělat dvěma způsoby. Jeden je pohodlnější a druhý je trochu zdlouhavý, ale s přidanou ochranou pro vás. Pohodlným způsobem je nezadávat heslo spolu se soukromým klíčem. Výsledkem je, že při použití soukromého klíče pro autentizaci nemusíte zadávat heslo. To znamená, že pokud se někomu dostane do rukou váš soukromý klíč, může jej také použít k ověření. Druhou metodou je ochrana vašeho soukromého klíče heslem, takže budete při ověřování vyzváni k zadání hesla (předpokládejme dvoufaktorovou autentizaci pomocí soukromého klíče i hesla).

ssh-keygen bez hesla

Chcete-li vygenerovat pár klíčů SSH, použijte následující příkaz:

[user@host ~]$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa): Enter
Created directory '/home/user/.ssh'.
Enter passphrase (empty for no passphrase): Enter
Enter same passphrase again: Enter
Your identification has been saved in /home/user/.ssh/id_rsa.
Your public key has been saved in /home/user/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:veutUNPio3QDCyvkYm1oIx35hmMrHpPKWFdIYu3HV+w [email protected]
The key's randomart image is:
+---[RSA 2048]----+
|                 |
|   .     .       |
|  o o     o      |
| . = o   o .     |
|  o + = S E .    |
| ..O o + * +     |
|.+% O . + B .    |
|=*oO . . + *     |
|++.     . +.     |
+----[SHA256]-----+ 

Ve výchozím nastavení jsou vaše soukromé a veřejné klíče uloženy ve vašem ~/.ssh/id_rsa a ~/.ssh/id_rsa.pub soubory.

ssh-keygen s heslem

Vytvoření klíče chráněného heslem vypadá asi takto:

[user@host ~]$ ssh-keygen -f .ssh/key-with-password
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in .ssh/key-with-password.
Your public key has been saved in .ssh/key-with-password.pub.
The key fingerprint is:
SHA256:s7GGB7EyHUry4aOcNPKmhNKS7dl1YsMVLvFZJ77VxAo [email protected]
The key's randomart image is:
+---[RSA 2048]----+
|    . + =.o ...  |
|     = B XEo o.  |
|  . o O X =....  |
| = = = B = o.    |
|= + * * S .      |
|.+ = o + .       |
|  + .            |
|                 |
|                 |
+----[SHA256]-----+

Použijte -f možnost určit soubor, kam budou klíče uloženy. Ve výše uvedeném příkladu jsou soukromé a veřejné klíče uloženy v /home/user/.ssh/key-with-pass a /home/user/.ssh/key-with-pass.pub soubory.

Upozornění

Pokud během dalšího generování páru klíčů SSH nezadáte jedinečný název souboru, budete vyzváni k povolení přepsat existující id_rsa a id_rsa.pub soubory. Pokud přepíšete stávající id_rsa a id_rsa.pub soubory, musíte poté nahradit starý veřejný klíč novým na VŠECHNY ze serverů SSH, které mají váš starý veřejný klíč.

Jakmile vygenerujete klíče, uloží se do /user/home/.ssh/ adresář s následujícími oprávněními:

  • Soukromý klíč – 600
  • Veřejný klíč – 644

Ještě jsi neskončil. Podívejme se na poslední krok úspěšné autentizace pomocí klíče SSH.

Sdílení klíčů

Aby to všechno fungovalo, musíte svůj veřejný klíč sdílet se vzdálenými počítači, na které se pokoušíte SSH. Použijte ssh-copy-id příkaz pro zkopírování vašeho veřejného klíče do cílového systému. Ve výchozím nastavení je cesta k souboru /home/user/.ssh/id_rsa.pub . Vydáte příkaz, určíte soubor, který sdílíte, a poté uživatele/hostitele, se kterým jej sdílíme. Mělo by to vypadat takto:

[user@host ~] $ ssh-copy-id -i .ssh/key-with-pass.pub user@destination
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/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
user@destination password: changeme
Number of key(s) added: 1

Nyní, když jste sdíleli veřejný klíč s cílovým hostitelem, můžete se ověřit na vzdáleném serveru předáním odpovídajícího soukromého klíče. Pokud jste zadali cestu k souboru pro váš soukromý klíč, musíte ji zadat zde. Jinak je výchozí /home/_user_/.ssh/id_rsa .

K vidění zde:

[user@host ~]$ ssh -i .ssh/key-with-password user@desination 
Enter passphrase for key '.ssh/key-with-password' : password here if you set one
[user@destination ~] $

Výhody a shrnutí

Výhody použití autentizace založené na klíči SSH jsou jasné. Hesla jsou odcizena každý den, především kvůli lidské chybě, ale také kvůli schopnosti a odhodlání útočníka. Šifrovaný klíč a konkrétněji šifrovaný klíč chráněný heslem ještě více znesnadňuje útok na vaši autentizaci SSH. Stále musíte najít rovnováhu mezi dostupností a zabezpečením, ale to se v každém prostředí řeší jinak.

[ Bezplatný online kurz:Technický přehled Red Hat Enterprise Linux. ]


Linux
  1. Použití AppImage pro správu balíčků Linuxu

  2. Cheat sheet pro uživatele Linuxu a oprávnění

  3. Použití GPG k šifrování a dešifrování souborů v systému Linux [Hands-on pro začátečníky]

  1. Jak skenovat váš Linux Box na trojské koně, malware a viry pomocí ClamAV

  2. Použití proměnných v SQLCMD pro Linux

  3. Použití kbhit() a getch() v Linuxu

  1. Linuxové tipy pro používání cronu k plánování úloh

  2. 10 návodů na příkazy Linuxu pro začátečníky a experty

  3. Tipy a triky pro použití CUPS pro tisk s Linuxem