SSH na Linuxovém serveru
SSH, známý také jako secure shell, je protokol, který lze použít k připojení a komunikaci se serverem. Můžete se připojit ke svému Linuxovému serveru pro relaci terminálu pomocí tohoto šifrovaného protokolu. Pokud používáte OpenSSH server, existují primárně dva různé způsoby, jak provést proces ověření. Prvním z nich je standardní ověřování na základě hesla. Zde jednoduše použijete své uživatelské jméno a heslo k získání přístupu ke svému účtu. Druhým způsobem je nastavení Linuxového serveru pro ověřování pomocí SSH klíčů.
V této příručce se zaměříme na to, jak můžete nakonfigurovat svůj Linuxový server tak, aby jako primární způsob ověřování používal SSH klíče. Probereme také, proč jsou SSH klíče často upřednostňovány před obvyklým mechanismem ochrany heslem.
Co jsou SSH klíče?
SSH klíče jsou podobné přihlašovacím údajům, které byste použili k přihlášení ke svému účtu na serveru. Místo zadávání uživatelského jména a hesla použijete pár SSH klíčů, což je také přístupový údaj. Přestože jsou klíče kryptografické, musíte s nimi zacházet jako s ověřovacími údaji, protože to je účel, kterému slouží.
Typický SSH klíč se skládá ze dvou částí: autorizovaného klíče (authorized key) a identifikačního klíče (identity key). Autorizovaný klíč je veřejný klíč, který funguje v kombinaci s vaším soukromým identifikačním klíčem a umožňuje vám přístup k účtu. Veřejný klíč se nachází na vzdáleném serveru, ke kterému se chcete připojit pomocí SSH, a zůstává v souboru ~/.ssh/authorized_keys přidruženém k vašemu uživatelskému účtu. Identifikační klíče slouží k ověření vaší identity jako správného uživatele, aby bylo zajištěno, že k danému účtu bude mít přístup pouze oprávněný personál. Souhrnně se tyto klíče nazývají uživatelské klíče, protože ověřují identitu uživatele. Jakmile je server schopen ověřit oba klíče, zahájí se relace shellu za účelem provádění vašich příkazů.
Máte také hostitelské klíče (host keys) a relační klíče (session keys). Protokol ověřuje místní počítač, systém nebo server pomocí hostitelského klíče. Relační klíče pomáhají šifrovat datový tok přes připojení. Díky tomu je vaše relace a odpovídající aktivita mnohem bezpečnější a zajištěnější.
SSH klíče namísto ochrany heslem
Hlavním důvodem, proč je ověřování pomocí SSH klíčů vhodnější než ochrana heslem, je to, že druhá možnost vás může vystavit kybernetickým útokům. Většina lidí nepoužívá extrémně složitá hesla, aby si je pamatovali, když se potřebují přihlásit. V důsledku toho vzniká zranitelné místo. Mnoho útočníků používá hrubou sílu k prolomení relativně jednoduchého hesla a proniknutí do účtu. V dnešní době je to obzvláště snadné díky automatizaci a pokročilým hackerským technologiím.
SSH klíče naopak nabízejí mnohem bezpečnější způsob, jak získat přístup k vašemu účtu. Jak jsme již zmínili, tato metoda používá k ověření identity klienta veřejný a soukromý klíč. Zatímco veřejný klíč můžete sdílet s kýmkoli, soukromý klíč musíte udržovat v tajnosti. Při spárování veřejný klíč dešifruje soukromý klíč, aby ověřil vaši identitu. Ochranu můžete dále vrstvit přidáním přístupové fráze (passphrase) k páru klíčů. O přístupové frázi si povíme více dále v příručce. Nicméně i bez přístupové fráze je váš soukromý SSH klíč na vašem místním počítači v naprostém bezpečí. Síť nemá nikdy přímý přístup ke klíči, který je umístěn v omezeném adresáři a je doplněn o omezená oprávnění.
Generování SSH klíčů
Chcete-li vygenerovat pár SSH klíčů, musíte projít sadu nástrojů OpenSSH a najít ssh-keygen. Jedná se o speciální pomocný nástroj, který vám umožní vygenerovat pár SSH klíčů o velikosti přibližně 2048 bitů. Začněte spuštěním tohoto příkazu:
|
1 |
ssh-keygen |
Tím se zobrazí následující zpráva:
|
1 2 |
Generování veřejný/soukromý rsa klíč pár. Zadejte soubor v kterém k uložit ten klíč (/home/username/.ssh/id_rsa): |
Tato zpráva vygeneruje soukromý klíč s názvem id_rsa a veřejný klíč s názvem id_rsa.pub. V tomto okamžiku si můžete vybrat, kam chcete klíč umístit. Doporučujeme ponechat výchozí umístění stisknutím klávesy Enter. Ponechání výchozího umístění zajistí, že server automaticky vyhledá a ověří klíče, kdykoli se pomocí tohoto systému přihlásíte. Výchozí umístění je adresář ~/.ssh v domovském adresáři. Pokud dáváte přednost výběru jiného místa, zadejte jeho umístění.
Přepisování starších SSH klíčů
Je důležité si uvědomit, že v systému můžete mít v daný okamžik pouze jeden pár SSH klíčů. To znamená, že pokud jste v systému dříve vygenerovali a uložili pár klíčů, zobrazí se následující zpráva:
|
1 2 |
/home/username/.ssh/id_rsa již existuje. Přepsat (y/n)? |
Chcete-li pokračovat v vytváření a ukládání nového páru SSH klíčů, musíte smazat ten stávající. Pamatujte: pokud přepíšete klíč již uložený na disku, nebudete jej moci nadále používat pro účely ověřování. Jedná se o nevratný proces, proto se ujistěte, že jste si naprosto jisti, že chcete starý pár klíčů přepsat.
Nastavení přístupové fráze
Jakmile nastavíte klíče v adresáři, budete dotázáni, zda chcete zadat přístupovou frázi:
|
1 2 3 |
Vytvořen adresář '/home/username/.ssh'. Zadejte přístupovou frázi (prázdné pro žádnou přístupovou frázi): Zadejte stejnou přístupovou frázi znovu: |
Přístupová fráze je volitelná – můžete se rozhodnout ji přeskočit. Přidává však další vrstvu zabezpečení pro váš soukromý klíč tím, že jej zašifruje na disku. Pokud se rozhodnete přístupovou frázi použít, budete ji muset zadat správně pokaždé, když se pokusíte přihlásit pomocí tohoto páru SSH klíčů:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
Váš identifikace byla byla uložena v /home/username/.ssh/id_rsa. Váš veřejný klíč byl byl uložen v /home/username/.ssh/id_rsa.pub. The Klíčový otisk je: a9:49:2e:2a:5e:33:3e:a9:de:4e:77:11:58:b6:90:26 username@remote_host Obrázek klíče 's randomart je is: +--[ RSA 2048]----+ | ..o | | E o= . | | o. o | | .. | | ..S | | o o. | | =o.+. | |. =++.. | |o=++. | +-----------------+ |
Nakonec byste nyní měli mít své SSH klíče, které můžete použít k ověření klienta.
Vložení vašeho SSH klíče do vašeho serverového účtu
Před použitím klíčů k ověření je nutné vložit veřejný klíč na vzdálený Linux server. Dále vám ukážeme, jak to udělat při vytváření vašeho serveru CloudSigma. Nejprve musíte najít svůj veřejný SSH klíč, abyste jej mohli zkopírovat a vložit. Pokud jste k vygenerování páru SSH klíčů použili výše uvedenou metodu, veřejný klíč najdete zadáním následujícího příkazu:
|
1 |
cat ~/.ssh/id_rsa.pub |
To povede k tomu, že se veřejný SSH klíč zobrazí takto:
|
1 |
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDNqqi1mHLnryb1FdbePrSZQdmXRZxGZbo0gTfglysq6KMNUNY2VhzmYN9JYW39yNtjhVxqfW6ewc+eHiL+IRRM1P5ecDAaL3V0ou6ecSurU+t9DR4114mzNJ5SqNxMgiJzbXdhR+j55GjfXdk0FyzxM3a5qpVcGZEXiAzGzhHytUV51+YGnuLGaZ37nebh3UlYC+KJev4MYIVww0tWmY+9GniRSQlgLLUQZ+FcBUjaqhwqVqsHe4F/woW1IHe7mfm63GXyBavVc+llrEzRbMO111MogZUcoWDI9w7UIm8ZOTnhJsk7jhJzG2GpSXZHmly/a/buFaaFnmfZ4MYPkgJD username@example.com |
Zkopírujte si tuto hodnotu pro pozdější použití. Při vytváření serveru u CloudSigma máte možnost přidat SSH klíč poté, co vyberete velikost serveru a obraz operačního systému:

Klikněte na Přidat a vložte to, co jste zkopírovali, abyste vložili SSH klíč do svého serveru. Výsledkem bude, že při každém spuštění serveru již bude tento SSH klíč integrován.
Kopírování veřejného klíče na stávající server
Zatímco výše uvedená metoda funguje při vytváření nového serveru, je možné vložit SSH klíč do již existujícího serveru? Odpověď zní ano a existuje několik způsobů, jak toho dosáhnout, v závislosti na tom, jaké nástroje máte k dispozici.
Použití SSH-Copy-ID
Toto je nejjednodušší a nejsnadnější způsob, jak zkopírovat veřejný klíč. Vše, co potřebujete, je nástroj ssh-copy-id, který najdete ve standardní sadě OpenSSH. Než však tuto metodu použijete, ujistěte se, že je na vašem serveru aktivováno ověřování pomocí hesla. Chcete-li klíč zkopírovat, použijete syntaxi ssh-copy-id a poté zadáte vzdáleného hostitele, ke kterému se chcete připojit. Budete také muset specifikovat účet, ke kterému se připojujete. K účtu musíte mít přístup chráněný heslem, aby se váš klíč zkopíroval na správné místo. Příkaz by měl vypadat takto:
|
1 |
ssh-copy-id username@remote_host |
To může vést k tomu, že se na vaší obrazovce objeví zpráva podobná této:
|
1 2 3 |
Autentičnost autentičnost of hostitel '111.111.11.111 (111.111.11.111)' může't být ověřena. ECDSA klíč otisk je fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe. Jste si jisti že chcete to pokračovat v připojování (yes/no)? yes |
K tomu obvykle dochází, pokud se k tomuto konkrétnímu vzdálenému hostiteli připojujete poprvé. Znamená to jednoduše, že počítač hostitele nerozpoznal. Stačí napsat „yes“ a stisknout Enter. Jakmile tak učiníte, nástroj prohledá účet a vyhledá váš veřejný klíč. Po jeho nalezení vás požádá o zadání hesla k účtu:
|
1 2 3 |
/usr/bin/ssh-copy-id: INFO: pokus o to přihlášení in s the novým klíčem(s), to odfiltrování out všech které jsou již nainstalovány /usr/bin/ssh-copy-id: INFO: 1 klíč(s) zbývá to k instalaci -- pokud jste are vyzváni nyní je to k instalaci the nových klíčů username@111.111.11.111's heslo: |
Poté můžete zadat své heslo. Po připojení k vašemu účtu nástroj zkopíruje obsah klíče ~/.ssh/id_rsa.pub a vloží jej do souboru authorized_keys v adresáři ~/.ssh ve vašem vzdáleném účtu. Poté se zobrazí následující zpráva:
|
1 2 3 |
Počet of klíčů(s) přidáno: 1 Nyní zkuste přihlášení k the počítači, pomocí: "ssh 'username@111.111.11.111'" a zkontrolujte to make jistotu že pouze the klíče(s) které jste chtěli byly přidány. |
To znamená, že jste úspěšně zkopírovali svůj veřejný klíč na svůj stávající vzdálený server.
Použití SSH
Jedná se o poměrně konvenční způsob kopírování veřejného klíče na server. Je lepší jej použít, pokud nemáte přístup k nástroji ssh-copy-id. Opět platí, že musíte mít k účtu přístup chráněný heslem. V podstatě jde o to, že obsah veřejného klíče vypíšete na svém počítači a přenesete jej na vzdálený server prostřednictvím navázaného SSH připojení. Příkaz, který k tomuto účelu použijete, by měl vypadat následovně:
|
1 |
cat ~/.ssh/id_rsa.pub | ssh username@remote_host "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys" |
Jak vidíte, určili jsme, že klíč by měl být umístěn v souboru authorized_keys v adresáři ~/.ssh na serveru. Použití symbolu >> také zajišťuje, že klíče přidáváme, místo abychom je přepisovali. Po spuštění příkazu se může zobrazit tato zpráva:
|
1 2 3 |
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 |
Podobně jako u předchozí zprávy to znamená, že počítač nerozpoznal vzdáleného hostitele. Napište „yes“ a stiskněte Enter pro pokračování. Nyní zadáte heslo k účtu:
|
1 |
username@111.111.11.111's password: |
Jakmile bude heslo ověřeno, klíč se zkopíruje do souboru ve vašem uživatelském účtu, jak bylo určeno.
Ručně
V případě, že nemáte přístup ke svému účtu na vzdáleném serveru chráněný heslem, můžete veřejný klíč zkopírovat ručně. Cílem je dostat hodnotu ze souboru id_rsa.pub do souboru ~/.ssh/authorized_keys na vašem vzdáleném zařízení. Jak již víme, hodnotu klíče id_rsa.pub si můžeme zobrazit pomocí tohoto příkazu:
|
1 |
cat ~/.ssh/id_rsa.pub |
Obsah vašeho veřejného klíče SSH se zobrazí takto:
|
1 |
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCqql6MzstZYh1TmWWv11q5O3pISj2ZFl9HgH1JLknLLx44+tXfJ7mIrKNxOOwxIxvcBF8PXSYvobFYEZjGIVCEAjrUzLiIxbyCoxVyle7Q+bqgZ8SeeM8wzytsY+dVGcBxF6N4JS+zVk5eMcV385gG3Y6ON3EG112n6d+SMXY0OEBIcO6x+PnUSGHrSgpBgX7Ks1r7xqFa7heJLLt2wWwkARptX7udSq05paBhcpB0pHtA1Rfz3K2B+ZVIpSDfki9UVKzT8JUmwW6NNzSgxUfQHGwnW7kj4jp4AT0VZk3ADw497M2G/12N0PPB5CnhHf7ovgy6nL1ikrygTKRFmNZISvAcywB9GVqNAVE+ZHDSCuURNsAInVzgYo9xgJDW8wUw2o8U77+xiFxgI5QSZX3Iq7YLMgeksaO4rBJEa54k8m5wEiEE1nUhLuJ0X/vh2xPff6SQ1BL/zkOhvJCACK6Vb15mDOeCSq54Cr7kvS46itMosi/uS66+PujOO+xt/2FWYepz6ZlN70bRly57Q06J+ZJoc9FfBCbCyYH7U/ASsmY095ywPsBo1XQ9PqhnN1/YOorJ068foQDNVpm146mUpILVxmq41Cj55YKHEazXGsdBIbXWhcrRf4G2fJLRcGUr9q8/lERo9oxRm5JFX6TCmj6kmiFqv+Ow9gI0x8GvaQ== demo@test |
Dále musíte získat přístup ke svému účtu na vzdáleném hostiteli jakýmikoli dostupnými prostředky. Po přihlášení zkontrolujte, zda existuje adresář ~/.ssh. Pokud ne, můžete jej vytvořit spuštěním následujícího příkazu:
|
1 |
mkdir -p ~/.ssh |
Nyní můžete pomocí tohoto příkazu přidat obsah souboru id_rsa.pub do souboru authorized_keys v tomto adresáři ~/.ssh na vzdáleném serveru:
|
1 |
echo public_key_string >> ~/.ssh/authorized_keys |
Místo psaní „public_key_string“ v tomto příkazu budete muset zadat obsah klíče, který jste dříve získali spuštěním příkazu cat ~/.ssh/id_rsa.pub.
Ověření pomocí vašeho SSH klíče
Nyní se můžete snadno přihlásit ke svému účtu pouze pomocí svých SSH klíčů. To znamená, že k přístupu k účtu na serveru již nepotřebujete heslo. Použijete přihlašovací údaje, které obvykle používáte pro účely přihlášení:
|
1 |
ssh username@remote_host |
To může způsobit, že se zobrazí následující zpráva:
|
1 2 3 |
The Důvěryhodnost of hostitele '111.111.11.111 (111.111.11.111)' nelze't be ověřit. Otisk ECDSA klíče je fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe. Jste si jistí, že chcete pokračovat v připojování (yes/no)? yes |
Pokud uvidíte tuto zprávu, nemějte obavy. Znamená to pouze, že lokální systém nedokáže rozpoznat vzdáleného hostitele. K tomu obvykle dochází, pokud se k hostiteli připojujete úplně poprvé. Stačí pouze napsat „yes“ a stisknout Enter. Pokud se vrátíme k některým z předchozích kroků, jestliže jste použili přístupovou frázi (passphrase), zde ji budete muset zadat. Pokud ne, přihlásíte se ke svému účtu ihned po ověření SSH klíčů. Tím se spustí nová relace shellu prostřednictvím vašeho aktuálního účtu na lokálním počítači.
Jak zakázat ověřování heslem na vašem serveru?
Nyní, když už víte, jak nastavit SSH klíče, musíte zakázat ověřování heslem. I když můžete k ověření použít SSH klíče, stále jste zranitelní vůči útokům hrubou silou (brute force), pokud je proces ověřování heslem aktivní. Před zakázáním mechanismu ověřování heslem se ujistěte, že konfigurace ověřování založeného na SSH klíči je nastavena pro účet root na serveru nebo že nakonfigurovaný účet má přístup sudo. Důvodem pro toto ověření je jistota, že si zachováte administrátorský přístup k účtu i po zakázání hesel. Nyní můžete tento SSH klíč použít k přihlášení ke svému serverovému účtu. Dalším krokem je otevření konfiguračního souboru SSH démona:
|
1 |
sudo nano /etc/ssh/sshd_config |
Zde musíte vyhledat následující direktivu:
|
1 |
PasswordAuthentication |
Tento řádek musíte odkomentovat a změnit hodnotu na „no“, následovně:
|
1 |
PasswordAuthentication no |
Tímto krokem zakážete ověřování založené na hesle. Po dokončení soubor jednoduše uložte a zavřete. Nakonec musíte restartovat zařízení, aby se změny projevily. Pokud používáte zařízení se systémem Ubuntu nebo Debian, můžete k zakázání přístupu pomocí hesla použít také následující příkaz:
|
1 |
sudo service ssh restart |
Chcete-li se ujistit, že váš démon neboli sshd povoluje na serveru pouze ověřování založené na SSH na strojích s CentOS nebo Fedora, použijte příkaz:
|
1 |
sudo service sshd restart |
Závěr
Jakmile dokončíte všechny tyto kroky, měli byste mít na svém serveru nakonfigurované a funkční ověřování založené na SSH klíči. Nyní si můžete být jisti, že jsou vaše servery v bezpečí a chráněny!
Přejeme příjemnou práci s počítačem!
Komentáře
Zatím žádné komentáře. Buďte první.