SSH je zabezpečený síťový protokol pro přístup ke vzdáleným počítačům v síti.
Počítače spolu komunikují prostřednictvím sítí. Proto síťoví výzkumníci definovali sadu pravidel pro komunikaci s jinými stroji a začali vyvíjet protokoly jako Telnet; pomocí toho může jeden uživatel převzít kontrolu nad jiným počítačem.
Nejsou však bezpečné, tj. kdokoli uprostřed sítě může zachytit a přečíst přenášená data. V polovině 90. let byl představen bezpečnější protokol s názvem ssh jako spolehlivý nástupce protokolu telnet.
Pokud jste vývojář softwaru nebo správce systému pracující v oboru, možná jste použili ssh, alespoň jednou. Pokud ne, pojďme se to nyní naučit, protože je to jedna ze základních dovedností, které musíte znát.
Table of Contents
Co je SSH?
SSH nebo Secure Shell nebo Secure Socket Shell je síťový protokol, který nám pomáhá bezpečně přistupovat a komunikovat se vzdálenými stroji (většinou vzdálenými servery).
Poskytuje silné šifrování a je široce používán správci sítí a vývojáři ke správě vzdálených systémů a aplikací, spouštění příkazů, sdílení souborů atd.
Potřeba SSH
SSH byl vytvořen v roce 1995 za účelem řešení bezpečnostních problémů, kterým čelí nezabezpečené protokoly vzdáleného přístupu, jako je např rlogin, rsh, Telnet.
Nyní si povíme něco o Telnetu, což je zkratka pro Teletype Network vyvinutou v roce 1969. Je to jednoduchý nástroj příkazového řádku, který běží na vašem počítači pro přístup ke vzdálenému serveru (kdekoli na světě). A posílejte příkazy, které mají být provedeny na tomto serveru, stejně jako byste seděli přímo před vzdáleným serverem (i míle daleko od serveru). Telnet přenáší a přijímá zprávy ve formátu prostého textu po síti.
Příkazy, které byste spustili, by mohly být spouštění programů, vytváření adresářů, vytváření/mazání/přenos souborů, spouštění/zastavování služeb atd.
Problém s připojením dalšího stroje v síti je ten, že přenášená data budou procházet mnoha sítěmi. Mezitím některé z nich mohou být nezabezpečené a vysílaná data by mohla být zachycena, případně upravena, než dosáhnou zamýšleného cílového stroje.
V prvních dnech, kdy bezpečnost nebyla tak důležitá, se veškerá komunikace odehrávala v prostém textu. Data přenášená přes internet mezi klientem a serverem tak mohou být snadno zachycena. A dá se číst, protože zprávy nejsou šifrované.
Protokoly s otevřeným textem jsou extrémně nezabezpečené a nikdy se nepoužívají pro přenos citlivých dat, jako jsou hesla, tajemství atd. Proto je SSH považován za bezpečnou alternativu ke starším síťovým protokolům pro vzdálený přístup.
Jak to funguje?
SSH používá architekturu klient-server pro zabezpečenou komunikaci po síti připojením ssh klienta k ssh serveru. Ve výchozím nastavení ssh server naslouchá standardnímu TCP portu 22 (pro lepší zabezpečení to můžete změnit).
K autentizaci mezi klientem a serverem používá techniku šifrování s veřejným klíčem. Protokol navíc používá silné symetrické šifrovací a hashovací algoritmy pro výměnu zpráv mezi klientem a serverem, aby bylo zajištěno soukromí a integrita dat.
Linux je široce používaný operační systém pro vzdálené servery kvůli jeho bezpečnosti a odolnosti. Mnoho serverů, které používají operační systém Linux na internetu, běží léta bez mnoha poruch nebo dokonce restartování.
Většina relací SSH (období, ve kterém přistupujeme ke vzdálenému serveru) bude mít pouze následující dvě operace:
- Autentizace
- Provedení příkazu
Servery SSH mohou ověřovat klienty pomocí různých metod.
A dva oblíbené způsoby jsou:
Autentizace na základě hesla je výchozí metoda používaná pro ověřování OpenSSH nainstalované klienty. Je to nejzákladnější ověřování ssh, ale ne nejbezpečnější.
Přestože jsou hesla odesílána na server bezpečně, moderní útoky hrubou silou mohou autentizaci obejít.
Autentizace založená na klíčích ještě více zlepšuje zabezpečení systému generováním párů klíčů SSH, což se ukazuje jako spolehlivá a bezpečná alternativa.
Poté, co server úspěšně autentizuje klienta, je mezi nimi navázáno zabezpečené spojení.
Přístup ke vzdálenému serveru pomocí SSH
Pokud jste uživatelem Mac/Linuxu, můžete přímo použít terminál k psaní a spouštění příkazů ssh, protože OpenSSH je již nainstalováno ve výchozím nastavení.
Pokud jste uživatelem systému Windows, musíte ke spuštění příkazů ssh nainstalovat jednoho klienta emulátoru terminálu třetí strany. Tmel je nejoblíbenější ssh klient pro operační systém Windows.
Chcete-li se připojit ke vzdálenému serveru pomocí SSH, musíte vědět alespoň dvě věci.
Syntaxe základního příkazu ssh je:
$ ssh <user-name> @ <host> -p <port-no>
Uživatelské jméno je uživatelské jméno vzdáleného počítače, ke kterému se pokoušíme připojit (a nikoli uživatel na vašem místním počítači), a hostitel je buď IP adresa, nebo název domény.
Podívejme se na příklad připojení ke vzdálenému serveru pomocí OverTheWire webová stránka. Je to bezplatná webová stránka s výzvou k válečným hrám.
Nyní se připojíme k bandita výzva pomocí ssh. Je to jedna z dostupných výzev na webu, 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
Když napíšete následující příkaz a stisknete enter:
$ ssh [email protected] -p 2220
Pro účely ověření vás vyzve k zadání hesla. Nyní zadejte heslo a stiskněte enter:
Pokud je zadané heslo správné, jste úspěšně přihlášeni ke vzdálenému serveru a váš terminál bude vypadat jako na obrázku výše.
Nyní můžete používat terminál vzdáleného stroje k psaní a provádění příkazů a provádění potřebných operací.
Když chcete ukončit relaci ssh, zadejte příkaz exit:
$ exit
Když se úspěšně odhlásíte z relace ssh, zobrazí se zpráva „Připojení uzavřeno“.
Závěr
Hlavním důvodem popularity SSH je šifrovaná komunikace mezi serverem a klientem.
Většina lidí předpokládá, že používání ssh je složité a získání znalostí o tom, jak to funguje, není snadno pochopitelné, ale je to jednodušší, než si myslíte. Nyní máte základní znalosti o SSH, o tom, jak funguje, o bezpečnostních aspektech za ním a proč hraje zásadní roli v komunikaci.
Dále prozkoumejte některé zdroje, abyste se stali správcem systému.