Jak nastavit klíče SSH v systému CentOS 7

Úvod

SSH neboli secure shell je šifrovaný protokol používaný ke správě a komunikaci se servery. Při práci se serverem CentOS je pravděpodobné, že většinu času strávíte v terminálové relaci připojené k serveru prostřednictvím SSH.

V této příručce se zaměříme na nastavení klíčů SSH pro vanilkovou instalaci systému CentOS 7. Klíče SSH poskytují jednoduchý a bezpečný způsob přihlašování k serveru a jsou doporučovány všem uživatelům.

Krok 1 – Vytvoření páru klíčů RSA

Prvním krokem je vytvoření páru klíčů v klientském počítači (obvykle ve vašem počítači):

  • ssh-keygen

Ve výchozím nastavení vytvoří ssh-keygen 2048bitový pár klíčů RSA, který je pro většinu případů použití dostatečně bezpečný (volitelně můžete zadat příznak -b 4096 pro vytvoření většího 4096bitového klíče).

Po zadání příkazu byste měli vidět následující výzvu:

Output
Generating public/private rsa key pair.Enter file in which to save the key (/your_home/.ssh/id_rsa):

Stisknutím ENTER uložíte dvojici klíčů do podadresáře .ssh/ ve svém domovském adresáři nebo zadejte jinou cestu.

Pokud jste již dříve vygenerovali pár klíčů SSH, může se zobrazit následující výzva:

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

Pokud se rozhodnete přepsat klíč na disku, nebudete se již moci ověřovat pomocí předchozího klíče. Při výběru možnosti ano buďte velmi opatrní, protože se jedná o destruktivní proces, který nelze vrátit zpět.

Poté by se měla zobrazit následující výzva:

Output
Enter passphrase (empty for no passphrase):

Tady můžete volitelně zadat bezpečnou přístupovou frázi, což je velmi doporučeno. Přístupová fráze přidává další vrstvu zabezpečení, která zabrání přihlášení neoprávněných uživatelů. Chcete-li se o zabezpečení dozvědět více, přečtěte si náš návod Jak nakonfigurovat ověřování pomocí klíčů SSH na serveru Linux.

Poté byste měli vidět následující výstup:

Output
Your identification has been saved in /your_home/.ssh/id_rsa.Your public key has been saved in /your_home/.ssh/id_rsa.pub.The key fingerprint is:a9:49:2e:2a:5e:33:3e:a9:de:4e:77:11:58:b6:90:26 [email protected]_hostThe key's randomart image is:+------+| ..o || E o= . || o. o || .. || ..S || o o. || =o.+. ||. =++.. ||o=++. |+-----------------+

Máte nyní veřejný a soukromý klíč, které můžete použít k ověření. Dalším krokem je umístění veřejného klíče na server, abyste se mohli přihlásit pomocí ověřování založeného na klíči SSH.

Krok 2 – Zkopírování veřejného klíče na server CentOS

Nejrychlejší způsob, jak zkopírovat veřejný klíč na hostitele CentOS, je použít nástroj s názvem ssh-copy-id. Vzhledem ke své jednoduchosti je tento způsob velmi doporučován, pokud je k dispozici. Pokud nemáte nástroj ssh-copy-id na svém klientském počítači k dispozici, můžete použít jednu ze dvou alternativních metod uvedených v této části (kopírování pomocí SSH s heslem nebo ruční kopírování klíče).

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

Určení ssh-copy-id je ve výchozím nastavení součástí mnoha operačních systémů, takže jej můžete mít k dispozici ve svém místním systému. Aby tato metoda fungovala, musíte již mít přístup k serveru pomocí hesla SSH.

Pro použití nástroje stačí zadat vzdáleného hostitele, ke kterému se chcete připojit, a uživatelský účet, ke kterému máte přístup pomocí hesla SSH. Na tento účet bude zkopírován váš veřejný klíč SSH.

Syntaxe je:

Může se zobrazit následující hlášení:

Output
The authenticity of host '203.0.113.1 (203.0.113.1)' 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

To pouze znamená, že váš místní počítač nerozpoznává vzdáleného hostitele. K tomu dojde při prvním připojení k novému hostiteli. Zadejte „ano“ a stiskněte ENTER pro pokračování.

Následující nástroj prohledá váš místní účet a vyhledá klíč id_rsa.pub, který jsme vytvořili dříve. Když klíč najde, vyzve vás k zadání hesla účtu vzdáleného uživatele:

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

Zadejte heslo (vaše psaní se z bezpečnostních důvodů nezobrazí) a stiskněte ENTER. Nástroj se připojí k účtu na vzdáleném hostiteli pomocí zadaného hesla. Poté zkopíruje obsah vašeho klíče ~/.ssh/id_rsa.pub do souboru v domovském adresáři ~/.ssh vzdáleného účtu s názvem authorized_keys.

Měli byste vidět následující výstup:

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

V tomto okamžiku byl váš klíč id_rsa.pub nahrán do vzdáleného účtu. Můžete pokračovat krokem 3.

Kopírování veřejného klíče pomocí SSH

Pokud nemáte k dispozici příkaz ssh-copy-id, ale máte přístup k účtu SSH na serveru založený na hesle, můžete své klíče nahrát běžnou metodou SSH.

To můžeme provést tak, že pomocí příkazu cat přečteme obsah veřejného klíče SSH na našem lokálním počítači a pošleme jej prostřednictvím připojení SSH na vzdálený server.

Na druhé straně se můžeme ujistit, že adresář ~/.ssh existuje a má správná práva pod účtem, který používáme.

V tomto adresáři pak můžeme vypsat obsah, který jsme přenesli potrubím, do souboru s názvem authorized_keys. K připojení obsahu místo jeho přepsání použijeme symbol přesměrování >>. To nám umožní přidávat klíče, aniž bychom zničili dříve přidané klíče.

Úplný příkaz vypadá takto:

  • cat ~/.ssh/id_rsa.pub | ssh [email protected]_host "mkdir -p ~/.ssh && touch ~/.ssh/authorized_keys && chmod -R go= ~/.ssh && cat >> ~/.ssh/authorized_keys"

Může se zobrazit následující zpráva:

Output
The authenticity of host '203.0.113.1 (203.0.113.1)' 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

To znamená, že místní počítač nerozpoznává vzdáleného hostitele. K tomu dojde při prvním připojení k novému hostiteli. Zadejte „ano“ a stiskněte ENTER pro pokračování.

Poté byste měli být vyzváni k zadání hesla vzdáleného uživatelského účtu:

Output
[email protected]'s password:

Po zadání hesla se obsah vašeho klíče id_rsa.pub zkopíruje na konec souboru authorized_keys účtu vzdáleného uživatele. Pokud byl tento postup úspěšný, pokračujte krokem 3.

Kopírování veřejného klíče ručně

Pokud nemáte k dispozici přístup SSH k serveru založený na hesle, budete muset výše uvedený postup provést ručně.

Ručně připojíme obsah vašeho souboru id_rsa.pub k souboru ~/.ssh/authorized_keys na vzdáleném počítači.

Chcete-li zobrazit obsah klíče id_rsa.pub, zadejte do místního počítače tento příkaz:

  • cat ~/.ssh/id_rsa.pub

Zobrazí se obsah klíče, který by měl vypadat nějak takto:

Output
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCqql6MzstZYh1TmWWv11q5O3pISj2ZFl9HgH1JLknLLx44+tXfJ7mIrKNxOOwxIxvcBF8PXSYvobFYEZjGIVCEAjrUzLiIxbyCoxVyle7Q+bqgZ8SeeM8wzytsY+dVGcBxF6N4JS+zVk5eMcV385gG3Y6ON3EG112n6d+SMXY0OEBIcO6x+PnUSGHrSgpBgX7Ks1r7xqFa7heJLLt2wWwkARptX7udSq05paBhcpB0pHtA1Rfz3K2B+ZVIpSDfki9UVKzT8JUmwW6NNzSgxUfQHGwnW7kj4jp4AT0VZk3ADw497M2G/12N0PPB5CnhHf7ovgy6nL1ikrygTKRFmNZISvAcywB9GVqNAVE+ZHDSCuURNsAInVzgYo9xgJDW8wUw2o8U77+xiFxgI5QSZX3Iq7YLMgeksaO4rBJEa54k8m5wEiEE1nUhLuJ0X/vh2xPff6SQ1BL/zkOhvJCACK6Vb15mDOeCSq54Cr7kvS46itMosi/uS66+PujOO+xt/2FWYepz6ZlN70bRly57Q06J+ZJoc9FfBCbCyYH7U/ASsmY095ywPsBo1XQ9PqhnN1/YOorJ068foQDNVpm146mUpILVxmq41Cj55YKHEazXGsdBIbXWhcrRf4G2fJLRcGUr9q8/lERo9oxRm5JFX6TCmj6kmiFqv+Ow9gI0x8GvaQ== [email protected]

Přistupte ke vzdálenému hostiteli pomocí libovolné metody, kterou máte k dispozici.

Jakmile budete mít přístup ke svému účtu na vzdáleném serveru, měli byste se ujistit, že adresář ~/.ssh existuje. Tento příkaz v případě potřeby adresář vytvoří, nebo neudělá nic, pokud již existuje:

  • mkdir -p ~/.ssh

Nyní můžete v tomto adresáři vytvořit nebo upravit soubor authorized_keys. Obsah souboru id_rsa.pub můžete přidat na konec souboru authorized_keys a v případě potřeby jej vytvořit pomocí tohoto příkazu:

  • echo public_key_string >> ~/.ssh/authorized_keys

V uvedeném příkazu nahraďte public_key_string výstupem příkazu cat ~/.ssh/id_rsa.pub, který jste provedli v místním systému. Měl by začínat ssh-rsa AAAA....

Nakonec zajistíme, aby adresář ~/.ssh a soubor authorized_keys měly nastavena příslušná oprávnění:

  • chmod -R go= ~/.ssh

Tímto příkazem rekurzivně odstraníme všechna oprávnění „group“ a „other“ pro adresář ~/.ssh/.

Pokud používáte účet root k nastavení klíčů pro uživatelský účet, je také důležité, aby adresář ~/.ssh patřil uživateli a ne root:

  • chown -R sammy:sammy ~/.ssh

V tomto návodu se náš uživatel jmenuje sammy, ale do výše uvedeného příkazu byste měli dosadit příslušné uživatelské jméno.

Nyní se můžeme pokusit o ověření bez hesla na našem serveru Ubuntu.

Krok 3 – Ověření na serveru CentOS pomocí klíčů SSH

Pokud jste úspěšně dokončili jeden z výše uvedených postupů, měli byste být schopni přihlásit se ke vzdálenému hostiteli bez hesla vzdáleného účtu.

Základní postup je stejný:

Pokud se k tomuto hostiteli připojujete poprvé (pokud jste použili poslední výše uvedený způsob), může se zobrazit něco takového:

Output
The authenticity of host '203.0.113.1 (203.0.113.1)' 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

To znamená, že váš místní počítač vzdáleného hostitele nerozpoznává. Zadejte „ano“ a poté stiskněte ENTER pro pokračování.

Pokud jste nezadali přístupovou frázi pro svůj soukromý klíč, budete okamžitě přihlášeni. Pokud jste při vytváření soukromého klíče zadali jeho přístupovou frázi, budete nyní vyzváni k jejímu zadání. Po ověření by se vám měla otevřít nová relace shellu s nakonfigurovaným účtem na serveru CentOS.

Pokud bylo ověřování pomocí klíče úspěšné, pokračujte dále a dozvíte se, jak dále zabezpečit systém zakázáním ověřování pomocí hesla.

Krok 4 – Zakázat ověřování pomocí hesla na serveru

Pokud jste se mohli přihlásit ke svému účtu pomocí SSH bez hesla, úspěšně jste nakonfigurovali ověřování pomocí klíče SSH ke svému účtu. Mechanismus ověřování založený na hesle je však stále aktivní, což znamená, že váš server je stále vystaven útokům hrubou silou.

Před dokončením kroků v této části se ujistěte, že máte buď nakonfigurováno ověřování založené na klíči SSH pro účet root na tomto serveru, nebo nejlépe, že máte nakonfigurováno ověřování založené na klíči SSH pro účet, který není účtem root na tomto serveru s právy sudo. Tento krok zablokuje přihlašování pomocí hesla, takže je důležité zajistit, abyste stále mohli získat přístup ke správě.

Jakmile potvrdíte, že váš vzdálený účet má práva správce, přihlaste se ke vzdálenému serveru pomocí klíčů SSH buď jako root, nebo pomocí účtu s právy sudo. Poté otevřete konfigurační soubor démona SSH:

  • sudo vi /etc/ssh/sshd_config

V souboru vyhledejte direktivu s názvem PasswordAuthentication. Ta může být zakomentována. Stisknutím klávesy i vložte text a poté řádek odkomentujte a nastavte hodnotu „no“. Tím zakážete možnost přihlašování přes SSH pomocí hesel účtů:

/etc/ssh/sshd_config
...PasswordAuthentication no...

Po dokončení změn stiskněte ESC a poté :wq pro zápis změn do souboru a ukončení. Abychom tyto změny skutečně provedli, musíme restartovat službu sshd:

  • sudo systemctl restart sshd.service

Pro jistotu otevřete nové okno terminálu a před uzavřením této relace otestujte, zda služba SSH funguje správně:

Po ověření služby SSH můžete bezpečně uzavřít všechny aktuální relace serveru.

Démon SSH na vašem serveru CentOS nyní reaguje pouze na klíče SSH. Ověřování pomocí hesla bylo úspěšně vypnuto.

Závěr

Na serveru byste nyní měli mít nakonfigurováno ověřování pomocí klíčů SSH, což vám umožní přihlašovat se bez zadávání hesla k účtu.

Pokud se chcete o práci s SSH dozvědět více, podívejte se do našeho průvodce SSH Essentials.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.