Top
Přejít na hlavní obsah
Služby
Návody > Seznam návodů > Jak nakonfigurovat přístup SSH pomocí veřejného klíče na CentOS 8

Jak nakonfigurovat přístup SSH pomocí veřejného klíče na CentOS 8

27 ledna 2021

CentOS Security

Úvod

Služba SSH představuje hlavní přístupový bod k vašemu cloudovému serveru a současně jeden z protokolů, které mohou být častěji vystaveny útokům než ostatní.

Pro lepší zabezpečení SSH je vhodné nakonfigurovat typ šifrovaného přístupu na základě použití klíčů RSA, jako alternativu k přihlášení založenému na hesle. V tomto typu ověřování klient vygeneruje soukromý klíč a jeho veřejný klíč, který je nainstalován na serveru, jej ověří.

V tomto návodu vám ukážeme, jak nastavit klíče SSH na serveru Linux CentOS 8. Pokud si tímto způsobem zabezpečíte přístup na server, ověření bude probíhat pomocí šifrovaných klíčů, aniž byste pokaždé museli zadávat heslo.

Generování páru klíčů

První věc, kterou musíte udělat, je vygenerovat pár klíčů na klientském počítači. V tomto příkladu je klientem váš místní počítač.

Poté zadejte následující příkaz na terminálu pro vytvoření 2048bitového páru klíčů RSA

ssh-keygen

Tento typ klíče je pro většinu uživatelů dostatečně bezpečný. Pokud je potřeba vyšší úroveň zabezpečení, lze vygenerovat 4096bitové klíče RSA přidáním příznaku "-b 4096" na konci příkazu.

Po stisknutí klávesy Enter budete dotázáni, kam vygenerovaný pár klíčů uložit. V případě, že není nutné klíče ukládat jinde, potvrďte stisknutím klávesy Enter, jinak jednoduše zadejte novou cestu k souboru id_rsa.

Key generation

Pokud byl vygenerován pár klíčů již dříve, může být zobrazena varovná zpráva s dotazem, zda přepsat existující soubory. Buďte opatrní, protože taková operace je nevratná a při přepsání souboru již nelze staré klíče obnovit.

Po výběru cesty, kam chcete soubory uložit, budete vyzváni k zadání volitelné přístupové fráze (passphrase), pomocí které lze zvýšit úroveň zabezpečení vašich klíčů. Poté zadejte heslo a stiskněte klávesu Enter.

Pokud byl postup generování klíčů úspěšný, bude zobrazen výstup podobný tomu na následujícím obrázku.

Key generation completed

Na konci této operace ssh-keygen uloží dva soubory do zobrazených umístění:

  • id_rsa: klientův soukromý klíč, není určen ke sdílení.
  • id_rsa.pub: veřejný klíč, možno sdílet.

V tomto okamžiku máte dva klíče. Nyní sdělte veřejný klíč serveru, aby mohl vytvořit ověřovací systém.

Kopírování veřejného klíče na server

Nyní nainstalujte na svůj server veřejný klíč. Nejrychlejší způsob, jak odeslat veřejný klíč na server, je ssh-copy-id, jednoduchý, ale účinný nástroj předinstalovaný v mnoha operačních systémech.

Pokud ho nemáte, můžete klíč zkopírovat přímým přístupem přes SSH nebo ručním zkopírováním souboru na server. V následujících odstavcích jsou popsány 3 metody, jak klíč zkopírovat.

Kopírování pomocí ssh-copy-id

Chcete-li použít tento nástroj, zadejte vzdálený server, do kterého se má odeslat váš veřejný klíč. K tomu jsou samozřejmě nutné přihlašovací údaje pro připojení k serveru. Zadejte:

ssh-copy-id [email protected]_host

Nahraďte „user“ uživatelským jménem pro přístup na server a „remote_host“ veřejnou IP adresou serveru (nebo doménou, která na ni odkazuje).

 

Při prvním připojení ke vzdálenému hostiteli se zobrazí výstražná zpráva s informací, že váš klient server nerozpoznal.

First connection warning

Zadejte "yes" a stiskněte klávesu Enter.

Poté zadejte heslo výše uvedeného uživatele pro přístup k serveru. Na konci této operace by měl být zobrazen výstup podobný následujícímu.

Copy completed

Po zadání hesla se nástroj ssh-copy-id pokusí připojit pomocí zadaných přístupových údajů. Pokud se připojení podařilo, zkopírujte obsah klíče "~ / .ssh / id_rsa.pub" do souboru "~ / .ssh / authorized_keys " na vzdálený server

Kopírování pomocí SSH

Pokud není nástroj ssh-copy-id ve vašem systému předinstalovaný, ale na váš server je možné přistupovat pomocí SSH, zobrazte obsah souboru ~ / .ssh file použitím cat a zkopírujte jej přímo do ~ / file. ssh / authorized_keys.

V tomto případě je nutné zadat příkaz:

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

Nahraďte "user" uživatelským jménem pro přístup na server a "remote_host" veřejnou IP adresou serveru (nebo doménou, která na ni odkazuje).

 

Tímto způsobem přidáte veřejný klíč do souboru "~ / .ssh / authorized_keys" bez přepsání jeho obsahu.

Také v tomto případě zadejte heslo k uživateli "user" pomocí kterého se připojujete na vzdálený server.

Manuální kopírování

Pokud není možné na server přistupovat pomocí výše zmíněných metod, lze veřejný klíč přidat ručně.

Nejprve si opět pomocí cat zobrazte obsah souboru "~ / .ssh / id_rsa.pub". Poté přejděte do adresáře, ve kterém jsou vygenerované klíče. Pokud jste nespecifikovali jinou cestu, naleznete je ve výchozím umístění /home/your_username/.ssh/.

cd /home/your_username/.ssh/

Nahraďte "your_username" jménem uživatele, pomocí kterého jste se přihlásili na počítač klienta.

Poté zadejte následující příkaz:

cat id_rsa.pub

Zobrazí se výstup podobný obrázku níže.

Public key

Připojte se na server SSH příkazem:

ssh [email protected]_host

Stejným způsobem nahraďte "user" uživatelským jménem pro přístup na server a "remote_host" IP adresou serveru.

Ujistěte se, že adresář "~ / .ssh" existuje zadáním příkazu:

mkdir -p ~/.ssh

Pokud adresář neexistuje, tento příkaz jej vytvoří. Pokud adresář existuje, nebude mít příkaz žádný účinek.

V tomto okamžiku zkopírujte veškerý výstup získaný příkazem cat id_rsa.pub do souboru authorized_keys. Pokud soubor neexistuje, bude vytvořen dalším příkazem. Pokud je již k dispozici, příkaz přidá klíč k obsahu souboru.

echo public_key >> ~/.ssh/authorized_keys

Nahraďte "public_key" výstupem získaným z příkazu cat id_rsa.pub.

Manual copy via SSH

Nakonec se ujistěte, že soubor authorized_keys má správná oprávnění. Poté zadejte:

chmod -R go= ~/.ssh

Při použití účtu root zadejte, kteří uživatelé mají přístup ke složce ".ssh". Zadejte:

chown -R user:user ~/.ssh

Nahraďte "user" jménem oprávněného uživatele.

Přístup na server pomocí SSH klíčů

Pokud bylo kopírování veřejného klíče jakoukoliv metodou úspěšně dokončeno, při připojení klienta na server již nebude potřeba zadávat heslo.

Na server lze přistupovat SSH příkazem:

ssh [email protected]_host

Nahraďte „user“ uživatelským jménem oprávněným pro přístup na server pomocí SSH a „remote_host“ veřejnou IP adresou serveru (nebo doménou, která na ni odkazuje).

Všimněte si, že již není potřeba zadávat heslo pro přístup. Pokud jste zadali během fáze generování klíče přístupovou frázi, budete požádáni pouze o zadání této fráze.

SSH access

Jak zakázat přihlašování pomocí hesla

V tomto okamžiku se vám podařilo získat přístup k vašemu serveru, aniž byste museli zadávat heslo pro přihlášení. K serveru je však stále možné přistupovat takovým způsobem, který vyžaduje vložení uživatelského jména a hesla.

To však vystavuje server externím brute-force útokům. Je proto doporučeno úplně deaktivovat tento typ ověřování, aby se mohli přihlašovat pouze oprávnění uživatelé.

Za účelem deaktivace se přihlaste na server jako root (nebo jiný uživatel s oprávněními správce) a otevřete soubor "/ etc / ssh / sshd_config".

sudo vi /etc/ssh/sshd_config

Uvnitř souboru vyhledejte parametr PasswordAuthentication a upravte jeho hodnotu na “no”. Poté stiskněte „i“ pro možnost editace a zrušte komentář tohoto řádku (odstraněním symbolu "#").

Password request removal

Jakmile byly parametry změněny, stiskněte klávesu ESC a poté zadejte „: wq“ pro ukončení a uložení změn. Aby se změny projevily, restartujte službu sshd.

sudo systemctl restart sshd

Závěr

V tomto okamžiku je váš server Linux CentOS 8 správně nakonfigurován a ověřování probíhá pomocí systému založeného na šifrovaných klíčích.

Nyní se k vašemu serveru budou moci pomocí klíčů připojit pouze správně nakonfigurovaní klienti a vy se již nebudete muset pokaždé ověřovat pomocí hesla.

Začněte používat FORPSI Cloud

 ZAČÍT HNED POŽÁDAT O VOUCHER*

(*) FORPSI vám poskytne voucher s kreditem v hodnotě 140 Kč pro cloudové služby

TECHNOLOGIČTÍ PARTNEŘI: