GNU/Linux >> Znalost Linux >  >> Linux

SSH bez hesla pomocí párů veřejného a soukromého klíče

Pokud pravidelně komunikujete s příkazy SSH a vzdálenými hostiteli, možná zjistíte, že použití páru klíčů místo hesel může být pohodlné. Místo toho, aby vzdálený systém vyžadoval heslo při každém připojení, lze autentizaci automaticky vyjednat pomocí páru veřejného a soukromého klíče.

Soukromý klíč zůstává zabezpečen na vaší vlastní pracovní stanici a veřejný klíč se umístí na konkrétní místo v každém vzdáleném systému, ke kterému přistupujete. Váš soukromý klíč může být zabezpečen lokálně pomocí přístupové fráze. Program pro místní ukládání do mezipaměti, jako je ssh-agent nebo gnome-keyring umožňuje zadávat tuto přístupovou frázi pravidelně, namísto pokaždé, když použijete klíč pro přístup ke vzdálenému systému.

[ Bezplatné stažení:cheat pro pokročilé příkazy systému Linux. ]

Generování páru klíčů a šíření veřejného klíče

Generování páru klíčů a šíření veřejného klíče je jednodušší, než se zdá. Pojďme si to projít.

Generování klíče

Minimální úsilí při vygenerování páru klíčů zahrnuje spuštění ssh-keygen a výběr výchozích hodnot u všech výzev:

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

Výchozí umístění pro uložení klíčů je v ~/.ssh adresář, který bude vytvořen, pokud neexistuje:

$ ls -al .ssh
total 16
drwx------. 2 training training 4096 Aug 12 07:43 .
drwx------. 5 training training 4096 Aug 12 07:43 ..
-rw-------. 1 training training 1843 Aug 12 07:43 id_rsa
-rw-r--r--. 1 training training  415 Aug 12 07:43 id_rsa.pub

Povolením tohoto příkazu vytvořit adresář také zajistíte správné nastavení vlastníka a oprávnění. Některé aplikace nebudou používat klíče, pokud jsou oprávnění k soukromému klíči příliš otevřená.

Soubor končící na .pub je veřejný klíč, který je třeba přenést do vzdálených systémů. Je to soubor obsahující jeden řádek:protokol, klíč a e-mail použitý jako identifikátor. Možnosti pro ssh-keygen vám umožní zadat jiný identifikátor:

$ cat .ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDZ4SCcMX1EK31G/qLyCs3PaFcWkx0QA61OwQNHYztvrg7iD/etN4S5UP6ugHjTcUvqD/fZJFBJeryK0Hz0FzejKYiJBxQuUqadyXFSW30VnW6mAzgNoz20rGc2mipUrsaqdBWWv5U7vX8sgjEHEgVHzq6pfWj681PtikJ8Dss1IvPiPvOoRz2jb1dQnnrAVqMDGeWbm4yjYQamPvnLo1Hy23NgXpZ7KXv9PuDDu3tqcoMUqFk7sHswMrCCUY9SWOD5JBbhD3JX4LPs68WWbETOqOQ3a9ebTsL3wRPSbuu/djhL9Qmd8fN2OaM2U2zFpeE3NzBq4KT/ml6RTv44EMuh [email protected]

Po vygenerování páru klíčů ssh-keygen příkaz také zobrazí otisk prstu a obrázek randomart, které jsou jedinečné pro tento klíč. Tyto informace lze sdílet s dalšími lidmi, kteří mohou potřebovat ověřit váš veřejný klíč.

Později je můžete zobrazit pomocí:

$ ssh-keygen -lv
Enter file in which the key is (/home/training/.ssh/id_rsa): 

-l možnost uvádí otisk prstu a -v možnost přidá ASCII art.

Šíření veřejného klíče do vzdáleného systému

Pokud je aktuálně povolena autentizace heslem, pak nejjednodušší způsob, jak přenést veřejný klíč na vzdálený hostitel, je pomocí ssh-copy-id příkaz. Pokud jste pro klíč použili výchozí název, stačí zadat vzdáleného uživatele a hostitele:

$ ssh-copy-id susan@streamer
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/training/.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
susan@streamer's password: 

Number of key(s) added: 1

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

Podle pokynů z výstupu ověřte, že se můžete připojit pomocí páru klíčů. Pokud jste implementovali přístupovou frázi, budete vyzváni k zadání přístupové fráze k použití soukromého klíče:

$ ssh susan@streamer
Last login: Sat Aug 10 14:09:33 2019 from X.X.X.X

Prohlédněte si výsledný soubor autorizovaného klíče. Zde byl připojen veřejný klíč. Pokud adresář nebo soubor neexistoval, pak byl (nebo byly) vytvořen se správným vlastnictvím a oprávněními. Každý řádek je jeden autorizovaný veřejný klíč:

[susan@streamer ~]$ cat .ssh/authorized_keys 
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDZ4SCcMX1EK31G/qLyCs3PaFcWkx0QA61OwQNHYztvrg7iD/etN4S5UP6ugHjTcUvqD/fZJFBJeryK0Hz0FzejKYiJBxQuUqadyXFSW30VnW6mAzgNoz20rGc2mipUrsaqdBWWv5U7vX8sgjEHEgVHzq6pfWj681PtikJ8Dss1IvPiPvOoRz2jb1dQnnrAVqMDGeWbm4yjYQamPvnLo1Hy23NgXpZ7KXv9PuDDu3tqcoMUqFk7sHswMrCCUY9SWOD5JBbhD3JX4LPs68WWbETOqOQ3a9ebTsL3wRPSbuu/djhL9Qmd8fN2OaM2U2zFpeE3NzBq4KT/ml6RTv44EMuh [email protected]

Chcete-li zrušit přístup pro tento pár klíčů, odstraňte řádek pro veřejný klíč.

Existuje mnoho dalších možností, které lze přidat do tohoto řádku v souboru autorizovaného klíče pro řízení přístupu. Tyto možnosti obvykle používají správci umístění veřejných klíčů do systému s omezeními. Tato omezení mohou zahrnovat, kde může spojení pocházet, jaké příkazy mohou být spuštěny a dokonce i datum udávající, kdy přestat přijímat tento klíč. Tyto a další možnosti jsou uvedeny v sshd manuálová stránka.

Změna přístupové fráze

Pokud potřebujete změnit přístupovou frázi na svém soukromém klíči nebo pokud jste zpočátku nastavili prázdnou přístupovou frázi a chcete tuto ochranu později, použijte ssh-keygen pomocí -p možnost:

$ ssh-keygen -p
Enter file in which the key is (/home/training/.ssh/id_rsa): 
Key has comment '[email protected]'
Enter new passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved with the new passphrase.

Pro specifikaci klíče můžete přidat další možnosti (-f ) a staré (-P ) nebo nový (-N ) přístupové fráze na příkazovém řádku. Pamatujte, že všechna hesla zadaná na příkazovém řádku budou uložena do vaší historie shellu.

Viz ssh-keygen manuálová stránka pro další možnosti.

Otáčení kláves

I když je veřejný klíč sám o sobě určen ke sdílení, mějte na paměti, že pokud někdo získá váš soukromý klíč, může jej použít pro přístup ke všem systémům, které mají veřejný klíč. Tyto páry klíčů také nemají dobu platnosti jako klíče GNU Privacy Guard (GPG) nebo certifikáty infrastruktury veřejných klíčů (PKI).

Pokud máte jakýkoli důvod se domnívat, že soukromý klíč byl odcizen nebo jinak kompromitován, měli byste tento pár klíčů nahradit. Starý veřejný klíč musí být odstraněn ze všech systémů, nový klíč musí být vygenerován pomocí ssh-keygen a nový veřejný klíč musí být přenesen do požadovaných vzdálených systémů.

Pokud střídáte klíče jako preventivní opatření a bez obav z kompromitace, můžete použít starý pár klíčů k ověření přenosu nového veřejného klíče před odstraněním starého klíče.

Je někdy používání prázdných přístupových frází dobrý nápad?

Při zvažování prázdné přístupové fráze pro váš soukromý klíč SSH je třeba myslet na několik věcí.

Jak bezpečný je soubor soukromého klíče?

Pokud máte tendenci pracovat z více klientských systémů a chcete mít buď více kopií svého klíče, nebo si ponechat kopii na vyměnitelném médiu, pak je opravdu dobrý nápad mít na soukromém klíči přístupovou frázi. Tento postup je navíc k ochraně přístupu k souboru klíče pomocí šifrovaných médií.

Pokud však máte pouze jednu kopii soukromého klíče a je uchovávána v systému, který je dobře zabezpečen a není sdílen, pak je přístupová fráze pro každý případ další úrovní ochrany.

Pamatujte, že změna přístupové fráze na jedné kopii nezmění přístupovou frázi na ostatních kopiích. Přístupová fráze jednoduše zamyká přístup ke konkrétnímu souboru klíče.

Proč si myslíte, že potřebujete prázdnou přístupovou frázi?

Existují případy pro klíče s prázdnými přístupovými frázemi. Některé nástroje, které potřebují automaticky přenášet soubory mezi systémy, potřebují k ověření metodu bez hesla. kdump obslužný program, když je nakonfigurován k výpisu jádra do vzdáleného systému pomocí SSH, je jedním příkladem.

Dalším běžným použitím je vygenerování páru klíčů pro skript, který je navržen tak, aby se spouštěl bez obsluhy, například z úlohy cron.

Co říkáte na alternativu středního terénu?

Soukromý klíč chráněný přístupovou frází sám o sobě vyžaduje zadání přístupové fráze při každém použití klíče. Toto nastavení nevypadá jako SSH bez hesla. Existují však mechanismy ukládání do mezipaměti, které vám umožňují zadat přístupovou frázi klíče jednou a poté klíč používat znovu a znovu, aniž byste toto heslo znovu zadávali.

OpenSSH je dodáván s ssh-agent démon a ssh-add nástroj pro ukládání odemčeného soukromého klíče do mezipaměti. Plocha GNOME má také démona klíčenek, který ukládá hesla a tajemství, ale také implementuje agenta SSH.

Životnost klíče uloženého v mezipaměti lze nakonfigurovat u každého z agentů nebo při přidání klíče. V mnoha případech je výchozím nastavením neomezená životnost, ale vyrovnávací paměť se vymaže, když se uživatel odhlásí ze systému. Budete vyzváni k zadání přístupového hesla pouze jednou za relaci přihlášení.

Pokud existuje naplánovaná aplikace, která musí být spuštěna mimo relaci přihlášení uživatele, může být možné použít tajný nebo jiný správce hesel k automatizaci odemykání klíče. Například Ansible Tower ukládá přihlašovací údaje v zabezpečené databázi. Tato databáze obsahuje soukromý klíč SSH používaný k připojení ke vzdáleným systémům (spravované uzly) a jakékoli přístupové fráze nezbytné pro tyto soukromé klíče. Jakmile jsou tato pověření uložena, lze úlohu naplánovat tak, aby spouštěla ​​playbook podle pravidelného plánu.

Automatické šíření

Centralizovaný správce identit, jako je FreeIPA, může pomoci s šířením klíčů. Nahrajte veřejný klíč na server jako atribut uživatelského účtu a poté jej podle potřeby předejte hostitelům v doméně. FreeIPA může také poskytnout další řízení přístupu založeného na hostiteli, kde lze klíč použít.

Klíče lze také distribuovat pomocí modulů Ansible. openssh_keypair modul používá ssh-keygen vygenerovat klíče a authorized_key modul přidává a odebírá autorizované klíče SSH pro konkrétní uživatelské účty.

Zabalení

Páry klíčů SSH jsou pouze jedním ze způsobů, jak automatizovat ověřování bez hesel. Ověřování pomocí rozhraní GSSAPI (Generic Security Services Application Program Interface) je také běžné, když se pokoušíte omezit používání hesel v síti pomocí centralizované správy uživatelů. Páry klíčů SSH jsou snazší možností implementace, když jednotné přihlášení (SSO) ještě není k dispozici.

Mnoho úložišť zdrojového kódu uděluje přístup pomocí klíčů SSH. Veřejný klíč můžete nahrát do účtu v hostitelské organizaci, jako jsou stránky Fedora Account System, GitLab nebo GitHub, a použít tento pár klíčů k ověření při stahování a odesílání obsahu do úložišť.


Linux
  1. Spravujte páry klíčů SSH pro cloudové servery pomocí python-novaclient

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

  3. Použití stejného soukromého klíče SSH na více počítačích

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

  2. Připojte se k serveru pomocí SSH v systému Linux nebo Mac OS X

  3. Jak používat příkaz ssh-keygen ke konfiguraci ssh bez hesla

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

  2. Jak zabránit tomu, aby ssh vyžadoval přístupovou frázi klíče pro přihlášení bez hesla

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