Jak na generování a kopírování SSH klíčů?

11. května 2015

Přinášíme vám další díl našeho průvodce nastavením SSH na server. V prvním díle jsme si ukázali základy práce s SSH klíči. V tomto druhém díle si probereme, jak se generují SSH klíče na klientském serveru a jak se distribuuje veřejný klíč na servery, na nichž se mají používat. Je to vhodný startovní díl pro ty z vás, kdo jste ještě nikdy negenerovali klíče, ale nyní je chcete používat kvůli zvýšení zabezpečení připojení.

Generování dvojice SSH klíčů

Abyste se mohli autentizovat s nějakým vzdáleným serverem bez hesla, prvním krokem je vygenerovat na lokálním počítači novou dvojici veřejného a privátního SSH klíče. Vždy byste se měli autentizovat pomocí SSH klíčů, pokud nemáte jiný, opravdu pádný důvod to nedělat.

Existuje řada kryptografických algoritmů, jimiž lze generovat SSH klíče, patří mezi ně RSA (iniciály autorů šifry: Rivest, Shamir a Adleman), DSA a ECDSA. Obvykle se dává přednost klíčům RSA, které jsou také výchozím typem klíčů.

Chcete-li na lokálním počítači vygenerovat dvojici RSA klíčů, napište:

ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/demo/.ssh/id_rsa):

Tato výzva (Zadejte soubor, kam se má uložit klíč) umožňuje zvolit umístění pro privátní RSA klíč. Stiskněte ENTER, abyste ponechali výchozí umístění, takže se bude ukládat do skrytého adresáře .ssh uvnitř vašeho uživatelského domovského adresáře. Když ponecháte výchozí vybrané umístění, bude váš SSH klient schopen nacházet klíče automaticky.

Enter passphrase (empty for no passphrase):
Enter same passphrase again:

Další výzva žádá, abyste zadali heslovou frázi (passphrase) libovolné délky, kterou zabezpečíte privátní klíč (budete ji muset zadat dvakrát za sebou). Heslovou frázi, kterou teď zadáte, budete muset standardně psát pokaždé, když použijete tento privátní klíč. Je to vlastně dodatečné zabezpečovací opatření. Pokud heslovou frázi používat nechcete, stiskněte rovnou ENTER a ponechejte ji prázdnou. Mějte však na paměti, že se pak bude moci k vašim serverům přihlašovat kdokoli, kdo nějak získá kontrolu nad vaším privátním klíčem.

Pokud zvolíte, že nějakou heslovou frázi zadáte, tak když ji píšete, nic se nezobrazuje. Je to preventivní bezpečnostní opatření.

Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
8c:e9:7c:fa:bf:c4:e5:9c:c9:b8:60:1f:fe:1c:d3:8a root@here
The key's randomart image is:
+--[ RSA 2048]----+
|                 |
|                 |
|                 |
|     +         |
|     o S   .   |
|     o   . * +   |
|     o + = O . |
|       + = = +   |
|     ....Eo+   |
+-----------------+

Tento postup vygeneroval dvojici SSH klíčů algoritmem RSA, uložené jsou ve skrytém adresáři .ssh uvnitř vašeho uživatelského domovského adresáře. Jsou to soubory:

  • ~/.ssh/id_rsa: Privátní klíč. TENTO SOUBOR NESDÍLEJTE!
  • ~/.ssh/id_rsa.pub: Sdružený veřejný klíč. Ten se může sdílet bez obav z důsledků.

Generování dvojice SSH klíčů s větším počtem bitů

SSH klíče jsou standardně 2048 bitové. Všeobecně se to považuje pro zabezpečení postačující, můžete však specifikovat větší počet bitů, potřebujete-li lépe kalený klíč.

Uděláte to tak, že uvedete argument -b a požadovaný počet bitů. Většina serverů podporuje klíče s délkou přinejmenším 4096 bitů. Další klíče možná nebudou akceptovány, bývá to prevence proti DDOS (Distributed Denial of Service, útok typu odmítnutí služby rozložený současně na mnoho uživatelů.)

ssh-keygen -b 4096

Pokud jste už dříve vytvořili jiný klíč, obdržíte dotaz, zda chcete nebo nechcete přepsat předchozí klíč:

Overwrite (y/n)?

Pokud zvolíte „yes“, předchozí klíč se přepíše a s tímto klíčem se už nebudete moci přihlašovat k serverům. Proto klíče přepisujte opatrně, až po zralé úvaze.

Odstranění nebo změna heslové fráze privátního klíče

Pokud jste k privátnímu klíči vygenerovali heslovou frázi a přejete si ji odstranit nebo změnit, udělá se to snadno.

Poznámka: Abyste mohli změnit nebo odstranit heslovou frázi, musíte znát její původní znění. Pokud jste ke klíči heslovou frázi ztratili, máte smůlu, budete muset vygenerovat novou dvojici klíčů.

Chcete-li změnit nebo odstranit heslovou frázi, napište prostě:

ssh-keygen -p

Enter file in which the key is (/root/.ssh/id_rsa):

Napište umístění klíče, který chcete modifikovat, nebo stiskněte ENTER, čímž akceptujete výchozí hodnotu:

Enter old passphrase:

Zadejte starou heslovou frázi, kterou chcete změnit. Pak budete požádáni, abyste zadali novou heslovou frázi:

Enter new passphrase (empty for no passphrase):

Enter same passphrase again:

Zadejte dvakrát za sebou novou heslovou frázi, nebo stiskněte ENTER, chcete-li heslovou frázi odstranit.

Zobrazení fingerprintu SSH klíče

Každá dvojice SSH klíčů sdílí jediný kryptografický „otisk prstu“ („fingerprint“), s kterým je možné klíče jednoznačně identifikovat. To se může hodit v mnoha různých situacích.

Chcete-li zjistit otisk prstu nějakého SSH klíče, napište:

ssh-keygen -l

Enter file in which the key is (/root/.ssh/id_rsa):

Můžete stisknout ENTER, pokud je uvedené umístění klíče správné, nebo zadejte patřičné umístění. Obdržíte řetězec obsahující bitovou délku klíče, otisk prstu, účet a houst, pro které byl klíč vytvořen, a použitý algoritmus:

4096 8e:c4:82:47:87:c2:26:4b:68:ff:96:1a:39:62:9e:4e demo@test (RSA)

Kopírování veřejného SSH klíče na server pomocí ssh-copy-id

Chcete-li na nějaký server zkopírovat veřejný klíč, abyste se pak mohli autentizovat bez hesla, existuje celá řada možných přístupů, jak to udělat.

Pokud už momentálně máte na serveru nakonfigurovaný přístup SSH přes heslo, a máte nainstalovanou utilitu ssh-copy-id, postup je jednoduchý. Nástroj ssh-copy-id je zařazený do mnoha balíků OpenSSH distribucí Linuxu, takže je velmi pravděpodobné, že ho máte nainstalovaný.

Pokud ano, přenesete snadno veřejný klíč tím, že napíšete:

ssh-copy-id username@remote_host

Název utility, své uživatelské jméno, zavináč a vzdálený houst. Budete vyzváni, abyste zadali heslo uživatelského účtu na vzdáleném systému:

The authenticity of host '111.111.11.111 (111.111.11.111)' can't be established.
ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe.
Are you sure you want to continue connecting (yes/no)? yes
/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
demo@111.111.11.111's password:

Poté, co napíšete heslo, obsah klíče ~/.ssh/id_rsa.pub se přidá na konec souboru ~/.ssh/authorized_keys uživatelského účtu:

Number of key(s) added: 1

 

Now try logging into the machine, with:   „ssh ‚demo@111.111.11.111′“

and check to make sure that only the key(s) you wanted were added.

Nyní se můžete pokusit přihlásit k tomuto účtu bez hesla:

ssh username@remote_host

Kopírování veřejného SSH klíče na server bez ssh-copy-id

Jestliže nemáte k dispozici utilitu ssh-copy-id, máte ale ke vzdálenému serveru SSH přístup založený na heslu, můžete zkopírovat obsah veřejného klíče jinak.

Můžete poslat obsah klíče na výstup a operátorem svislice ho předat jako vstup do příkazu ssh. Na vzdálené straně můžete zajistit, aby adresář ~/.ssh existoval, a pak přidat „pajpnutý“ obsah na konec souboru ~/.ssh/authorized_keys:

cat ~/.ssh/id_rsa.pub | ssh username@remote_host "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

Budete vyzváni, abyste dodali heslo pro vzdálený účet:

The authenticity of host '111.111.11.111 (111.111.11.111)' can't be established.
ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe.
Are you sure you want to continue connecting (yes/no)? yes
demo@111.111.11.111's password:

Poté, co zadáte heslo, se klíč zkopíruje, což pak umožní přihlašovat se bez hesla:

ssh username@remote_IP_host

Ruční kopírování veřejného SSH klíče na server

Pokud nemáte k dispozici SSH přístup založený na heslu, budete muset dodat veřejný klíč na vzdálený server ručně.

Na lokálním stroji zjistíte obsah souboru veřejného klíče takto:

cat ~/.ssh/id_rsa.pub

ssh-rsaAAAAB3NzaC1yc2EAAAADAQABAAACAQCqql6MzstZYh1TmWWv11q5O3pISj2ZFl9HgH1JLknLLx44+tXfJ7mIrKNxOOwxIxvcBF8PXSYvobFYEZjGIVCEAjrUzLiIxbyCoxVyle7Q+bqgZ8SeeM8wzytsY+dVGcBxF6N4JS+zVk5eMcV385gG3Y6ON3EG112n6d+SMXY0OEBIcO6x+PnUSGHrSgpBgX7Ks1r7xqFa7heJLLt2wWwkARptX7udSq05paBhcpB0pHtA1Rfz3K2B+ZVIpSDfki9UVKzT8JUmwW6NNzSgxUfQHGwnW7kj4jp4AT0VZk3ADw497M2G/12N0PPB5CnhHf7ovgy6nL1ikrygTKRFmNZISvAcywB9GVqNAVE+ZHDSCuURNsAInVzgYo9xgJDW8wUw2o8U77+xiFxgI5QSZX3Iq7YLMgeksaO4rBJEa54k8m5wEiEE1nUhLuJ0X/vh2xPff6SQ1BL/zkOhvJCACK6Vb15mDOeCSq54Cr7kvS46itMosi/uS66+PujOO+xt/2FWYepz6ZlN70bRly57Q06J+ZJoc9FfBCbCyYH7U/ASsmY095ywPsBo1XQ9PqhnN1/YOorJ068foQDNVpm146mUpILVxmq41Cj55YKHEazXGsdBIbXWhcrRf4G2fJLRcGUr9q8/lERo9oxRm5JFX6TCmj6kmiFqv+Ow9gI0x8GvaQ== demo@test

Tuto hodnotu můžete zkopírovat do schránky a ručně ji vložit na patřičné umístění na vzdáleném serveru. Budete se muset do vzdáleného serveru přihlásit prostřednictvím jiných prostředků (jako je webová konzola DigitalOcean).

Na vzdáleném serveru vytvořte adresář ~/.ssh, pokud tam ještě neexistuje:

mkdir -p ~/.ssh

Poté můžete vytvořit soubor ~/.ssh/authorized_keys nebo přidat na jeho konec hodnotu klíče tím, že napíšete:

echo sem_vlozte_retezec_verejneho_klice >> ~/.ssh/authorized_keys

Nyní byste měli být schopni přihlašovat se do vzdáleného serveru bez hesla.

V příštím díle si projdeme, jak dále nakonfigurovat SSH. Ukážeme si například, jak obnovit autentizaci heslem pro další uživatele. V dalších dílech se pak můžete těšit na ukážku prodloužení platnosti vašeho připojení a mnoho dalších informací.

logo-zonercloudČlánek byl přeložen díky ZonerCloud.cz – výkonné a levné VPS servery do 55 sekund.

Zabezpečte váš server SSL certifikátem. Je to snadné. Přesvědčte se v článku 7 mýtů o SSL certifikátech na vašem serveru.

Napsal: Justin Elingwood
Přeložil RNDr. Jan Pokorný
Znění původního článku najdete zde

Creative Commons License

Štítky: SSH seriál

Mohlo by vás také zajímat

Nejnovější

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *