Úvod
Secure Shell (SSH ) je šifrovaný protokol používaný uživateli Linuxu k připojení ke svým vzdáleným serverům.
Obecně existují dva způsoby, jak mohou klienti přistupovat ke svým serverům – pomocí ověřování na základě hesla nebo ověřování na základě veřejného klíče.
Použití klíčů SSH k ověření se důrazně doporučuje jako bezpečnější alternativa k heslům.
Tento tutoriál vás provede kroky, jak vygenerovat a nastavit klíče SSH na CentOS 7. Zabýváme se také připojením ke vzdálenému serveru pomocí klíčů a deaktivací ověřování heslem .
Než začnete
1. Zkontrolujte existující klíče
Před jakoukoli instalací je rozumné zkontrolovat, zda na klientských počítačích existují nějaké klíče.
Otevřete terminál a vypište všechny veřejné klíče uložené pomocí následujícího příkazu:
ls -l ~/.ssh/id_*.pub
Výstup vás informuje o všech vygenerovaných klíčích aktuálně v systému. Pokud žádné nejsou, zpráva vám řekne, že nemá přístup k /.ssh/id_*.pub
, protože takový soubor nebo adresář neexistuje.
2. Ověřte, že je nainstalováno SSH
Chcete-li zkontrolovat, zda je nainstalován balíček thw, spusťte příkaz:
ssh -V
Pokud již máte SSH, výstup vám řekne, která verze je spuštěna. Aktuálně je nejnovější verzí OpenSSH 8.0/8.0p1 .
Kroky k vytvoření klíčů SSH na CentOS
Krok 1:Vytvořte pár klíčů SSH
1. Začněte přihlášením do zdrojového počítače (místního serveru) a vytvořením 2048bitového páru klíčů RSA pomocí příkazu:
ssh-keygen -t rsa
Pokud chcete zpřísnit bezpečnostní opatření, můžete vytvořit 4096bitový klíč přidáním parametru -b 4096:
ssh-keygen -t rsa -b 4096
2. Po zadání příkazu byste měli vidět následující výzvu:
Generating public/private rsa key pair.
Enter file in which to save the key (home/your_username/.ssh/id_rsa):
3. Chcete-li uložit soubor do navrhovaného adresáře, stiskněte Enter . Případně můžete zadat jiné umístění.
4. Dále bude výzva pokračovat:
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Přestože vytvoření přístupové fráze není povinné, je velmi vhodné.
5. Nakonec výstup skončí zadáním následujících informací:
Your identification has been saved in home/your_username/.ssh/id_rsa.
Your public key has been saved in home/your_username/.ssh/id_rsa.pub.
The key fingerprint is:
KYg355:gKotTeU5NQ-5m296q55Ji57F8iO6c0K6GUr5:PO1iRk
[email protected]
The key's randomart image is:
+------[RSA 3072]-------+
| .oo. |
| +o+. |
| + +.+ |
| o + S . |
| . E . . =.o|
| . + . [email protected]|
| + . oo*=O|
| oo . .+o+|
| o=ooo=|
+------ [SHA256] ------+
Nyní musíte přidat veřejný klíč na vzdálený server CentOS.
Krok 2:Zkopírujte veřejný klíč na server CentOS
Veřejný klíč SSH můžete zkopírovat na vzdálený server pomocí několika různých metod:
- pomocí skriptu ssh-copy-id
- pomocí zabezpečeného kopírování (scp)
- ruční zkopírování klíče
Nejrychlejší a nejjednodušší metodou je použití ssh-copy-id
. Pokud je tato možnost k dispozici, doporučujeme ji použít. V opačném případě vyzkoušejte kteroukoli z dalších dvou uvedených.
Zkopírujte veřejný klíč pomocí ssh-copy-id
1. Začněte zadáním následujícího příkazu, zadáním uživatelského účtu SSH a IP adresy vzdáleného hostitele:
ssh-copy-id [email protected]_host
Pokud je to poprvé, kdy váš místní počítač přistupuje k tomuto specifickému vzdálenému serveru, obdržíte následující výstup:
The authenticity of host '104.0.316.1 (104.0.316.1)' can't be established.
ECDSA key fingerprint is KYg355:gKotTeU5NQ-5m296q55Ji57F8iO6c0K6GUr5:PO1iRk.
Are you sure you want to continue connecting (yes/no)? yes
2. Potvrďte připojení – zadejte ano a stiskněte Enter .
3. Jakmile vyhledá id_rsa.pub key
vytvořený na místním počítači, požádá vás o zadání hesla pro vzdálený účet. Zadejte heslo a stiskněte Enter .
4. Jakmile je spojení navázáno, přidá veřejný klíč na vzdálený server. To se provede zkopírováním ~/.ssh/id_rsa.pub
soubor do ~/.ssh
vzdáleného serveru adresář. Můžete jej najít pod názvem authorized_keys
.
5. Nakonec vám výstup sdělí počet přidaných klíčů spolu s jasnými pokyny, co dělat dále:
Number of key(s) added: 1
Now try logging into the machine, with: "ssh '[email protected]'"
and check to make sure that only the key(s) you wanted were added.
Zkopírujte veřejný klíč pomocí zabezpečeného kopírování
1. Nejprve nastavte připojení SSH se vzdáleným uživatelem:
ssh [email protected]_host
2. Dále vytvořte ~/.ssh
adresář a také authorized_keys
soubor:
mkdir -p ~/.ssh && touch ~/.ssh/authorized_keys
3. Použijte chmod příkaz ke změně oprávnění k souboru:
chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys
chmod 700
udělá soubor spustitelným , zatímco chmod 600
umožňuje uživateli číst a psát soubor.
4. Nyní otevřete novou relaci terminálu na místním počítači.
5. Zkopírujte obsah z id_rsa.pub
(veřejný klíč SSH) na dříve vytvořené authorized_keys
soubor na vzdáleném serveru CentOS zadáním příkazu:
scp ~/.ssh/id_rsa.pub [email protected]_host:~/.ssh/authorized_keys
Díky tomu byl veřejný klíč bezpečně uložen na vzdáleném účtu.
Ruční zkopírování veřejného klíče
1. Chcete-li ručně přidat veřejný klíč SSH na vzdálený počítač, musíte nejprve otevřít obsah z ~/.ssh/id_rsa.pub
soubor:
cat ~/.ssh/id_rsa.pub
2. Stejně jako na obrázku níže klíč začíná ssh-rsa a končí uživatelským jménem místního počítače a názvem hostitele vzdáleného počítače:
3. Zkopírujte obsah souboru, jak budete později potřebovat.
4. Poté se v okně terminálu připojte ke vzdálenému serveru, na který si přejete zkopírovat veřejný klíč. K navázání připojení použijte následující příkaz:
ssh [email protected]_host
5. Vytvořte adresář ~/.ssh a autorizované_klíče soubor na serveru CentOS pomocí následujícího příkazu:
mkdir -p ~/.ssh && touch ~/.ssh/authorized_keys
6. Změňte jejich oprávnění k souboru zadáním:
chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys
7. Dále otevřete authorized_keys
soubor s editorem podle vašich preferencí. Chcete-li jej například otevřít pomocí Nano, zadejte:
nano authorized_keys
8. Přidejte veřejný klíč, který jste dříve zkopírovali v kroku 2 této sekce na novém řádku (pod stávajícím obsahem).
9. Uložte změny a zavřete soubor.
10. Nakonec se přihlaste na server a ověřte, že je vše správně nastaveno.
Krok 3:Připojte se ke vzdálenému serveru pomocí klíčů SSH
Jakmile dokončíte předchozí kroky (vytvoření páru klíčů RSA a zkopírování veřejného klíče na server CentOS), budete se moci připojit ke vzdálenému hostiteli, aniž byste museli zadávat heslo pro vzdálený účet.
Vše, co musíte udělat, je zadat následující příkaz:
ssh [email protected]_host
Pokud jste při vytváření páru klíčů SSH nezadali přístupovou frázi, automaticky se přihlásíte ke vzdálenému serveru.
V opačném případě zadejte heslo, které jste zadali v úvodních krocích, a stiskněte Enter .
Jakmile shell potvrdí shodu klíče, otevře novou relaci pro přímou komunikaci se serverem.
Krok 4:Zakažte ověřování hesla
Přestože se vám podařilo získat přístup k serveru CentOS, aniž byste museli zadat heslo, stále má na počítači spuštěný systém ověřování založený na hesle. Díky tomu je potenciálním cílem útoků hrubou silou.
Ověřování heslem byste měli zcela zakázat podle uvedených kroků.
1. Pomocí klíčů SSH se přihlaste ke vzdálenému serveru CentOS, který má oprávnění správce:
ssh [email protected]_host
2. Dále otevřete konfigurační soubor démona SSH pomocí textového editoru dle vašeho výběru:
sudo nano /etc/ssh/sshd_config
3. Vyhledejte v souboru následující řádek:
PasswordAuthentication yes
4. Upravte konfiguraci změnou yes
hodnotu na no
. Směrnice by tedy měla vypadat následovně:
PasswordAuthentication no
5. Uložte soubor a ukončete textový editor.
6. Chcete-li povolit změny, restartujte sshd služba pomocí příkazu:
sudo systemctl restart sshd.service
7. Ověřte, že připojení SSH k serveru stále funguje správně. Otevřete nové okno terminálu a zadejte příkaz:
ssh [email protected]_host