SSH, neboli Secure Shell, je klíčový síťový protokol pro zajištění bezpečného přístupu ke vzdáleným počítačům v rámci sítě.
Počítače spolupracují v sítích a pro tuto komunikaci byly zavedeny protokoly, například Telnet. S Telnetem mohl uživatel ovládat jiný počítač, avšak tento protokol nebyl bezpečný. Data přenášená sítí mohla být odchycena a přečtena. V polovině 90. let vznikl protokol SSH jako spolehlivější a bezpečnější alternativa.
Pokud pracujete jako vývojář softwaru nebo správce systému, pravděpodobně jste se s SSH už setkali. Pokud ne, je nejvyšší čas se s ním seznámit, protože je to jedna z nejdůležitějších dovedností, kterou byste měli ovládat.
Co je SSH?
SSH, zkratka pro Secure Shell nebo Secure Socket Shell, je síťový protokol, který umožňuje zabezpečený přístup a komunikaci se vzdálenými počítači, nejčastěji servery.
Díky silnému šifrování je SSH hojně využíván správci sítí a vývojáři pro správu vzdálených systémů, spouštění příkazů a sdílení souborů.
Proč potřebujeme SSH?
SSH vzniklo v roce 1995 jako odpověď na bezpečnostní nedostatky starších protokolů pro vzdálený přístup, jako jsou rlogin, rsh a Telnet.
Telnet, vyvinutý v roce 1969, je nástroj příkazového řádku, který umožňuje přístup ke vzdálenému serveru. Můžete na serveru provádět příkazy, jako byste u něj seděli, a to i když je vzdálený. Telnet bohužel přenáší zprávy v nešifrovaném, tedy prostém textu.
Pomocí Telnetu můžete spouštět programy, vytvářet adresáře, manipulovat se soubory a ovládat služby. Problém je v tom, že data přenášená sítí mohou být odchycena a případně upravena, než dorazí do cíle.
V počátcích internetu, kdy bezpečnost nebyla prioritou, se veškerá komunikace odehrávala v prostém textu. Data mezi klientem a serverem byla tedy snadno čitelná, protože nebylo použito žádné šifrování.
Protokoly s otevřeným textem jsou velmi nezabezpečené a nikdy by se neměly používat pro přenos citlivých informací, jako jsou hesla. Z tohoto důvodu se SSH stal preferovanou alternativou pro bezpečný vzdálený přístup.
Jak SSH funguje?
SSH pracuje na principu klient-server. SSH klient se připojuje k SSH serveru a komunikace probíhá bezpečně. SSH server standardně naslouchá na TCP portu 22 (pro zvýšení bezpečnosti je možné port změnit).
Pro autentizaci mezi klientem a serverem se využívá šifrování s veřejným klíčem. Pro zabezpečení soukromí a integrity dat jsou dále využívány silné symetrické šifrovací a hashovací algoritmy.
Linux je oblíbený operační systém pro vzdálené servery díky své bezpečnosti a spolehlivosti. Servery s Linuxem běží často roky bez nutnosti restartu.
Typická SSH relace (doba, po kterou jste připojeni k vzdálenému serveru) zahrnuje dvě základní operace:
- Autentizaci
- Spuštění příkazů
SSH servery mohou ověřovat klienty různými způsoby.
Dvě nejběžnější metody jsou:
Autentizace pomocí hesla, která je standardně používaná klienty OpenSSH. Je to nejzákladnější, avšak ne nejbezpečnější způsob.
Hesla jsou sice odesílána na server šifrovaně, ale mohou být prolomena moderními útoky hrubou silou.
Bezpečnější variantou je autentizace založená na klíčích SSH, která spočívá ve vygenerování páru klíčů, čímž se zabezpečení systému výrazně zvyšuje.
Po úspěšné autentizaci je mezi klientem a serverem navázáno zabezpečené spojení.
Přístup ke vzdálenému serveru pomocí SSH
Pokud používáte Mac nebo Linux, můžete příkazy SSH psát a spouštět přímo v terminálu, protože OpenSSH je již standardně nainstalovaný.
Uživatelé Windows musí pro spouštění příkazů SSH nainstalovat klienta emulátoru terminálu třetí strany. PuTTY je jedním z nejoblíbenějších SSH klientů pro Windows.
Pro připojení ke vzdálenému serveru pomocí SSH potřebujete znát alespoň dvě věci.
Základní syntaxe příkazu SSH je:
$ ssh <uživatelské_jméno> @ <hostitel> -p <číslo_portu>
Uživatelské jméno je jméno uživatele na vzdáleném počítači, ke kterému se chcete připojit, a hostitel je IP adresa nebo doménové jméno.
Podívejme se na příklad připojení ke vzdálenému serveru pomocí webu OverTheWire, který nabízí různé výzvy pro procvičování.
Připojíme se k výzvě bandit, která učí, jak se přihlásit pomocí SSH.
Přihlašovací údaje:
uživatelské jméno a heslo: bandit0
hostitel a port: bandit.labs.overthewire.org, 2220
Zadejte následující příkaz a stiskněte Enter:
$ ssh [email protected] -p 2220
Systém vás vyzve k zadání hesla. Zadejte heslo a stiskněte Enter:
Pokud je heslo správné, budete úspěšně přihlášeni ke vzdálenému serveru a terminál bude vypadat jako na obrázku výše.
Nyní můžete v terminálu vzdáleného počítače spouštět příkazy a provádět potřebné operace.
Pro ukončení SSH relace zadejte příkaz exit:
$ exit
Po úspěšném odhlášení z relace se zobrazí zpráva „Připojení uzavřeno“.
Závěr
SSH je oblíbené především díky šifrované komunikaci mezi serverem a klientem.
Mnoho lidí se domnívá, že používání SSH je komplikované a pochopení principů jeho fungování je obtížné, ale ve skutečnosti je to jednodušší, než se zdá. Nyní máte základní znalosti o SSH, o tom, jak funguje a o jeho bezpečnosti a roli v moderní komunikaci.
Prohlubte své znalosti a staňte se správcem systému.