user@server:~$ ssh [email protected]Welcome to server.Last login: 2026-05-26$ █

Secure Shell (SSH)

11 min přečtenovytváření sítí

SSH je protokol, který provozuje nevídanou polovinu internetu: vzdálenou konzoli každého správce systému, každý krok nasazení vývojáře, každé odeslání Git do soukromého úložiště. Na konci 90. let nahradil telnet a od té doby je výchozím protokolem zabezpečeného prostředí. Vědět, co to vlastně dělá, dává spoustu operací smysl.

Celé tělo článku je uvedeno níže v angličtině.

SSH (Secure Shell) je šifrovací síťový protokol pro bezpečný provoz síťových služeb v nezabezpečené síti. Nejčastěji se používá pro vzdálené přihlášení z příkazového řádku ("shell" v názvu) a pro přenos souborů, ale základní protokol je dostatečně obecný pro tunelování jakékoli TCP aplikace. SSH vytvořil Tatu Ylönen v roce 1995 po útoku na jeho univerzitě, který šňupal hesla; implementace OpenSSH (zahájená v roce 1999) je dnes nejrozšířenější verzí.

Co poskytuje SSH

Tři vlastnosti:

  • Důvěrnost – při přenosu šifrováno. Síťoví pozorovatelé vidí zašifrované bajty, nikoli příkazy nebo hesla.
  • Integrity — upravené pakety jsou detekovány a odmítnuty.
  • Ověření obou konců — klient se ověřuje na serveru (metoda klienta nebo hostitele, veřejný klíč) klíč).

Tato kombinace nahrazuje starší sadu telnet, rlogin, rsh a rcp – z nichž všechny přenášely přihlašovací údaje v prostém textu.

Jak fungují připojení SSH

Potřebné handshake, zjednodušené na serveru Cl2 PLZZXPLZ2 Cl2ZXPLZ2 port 22 (konfigurovatelný).

  • Obě strany si vyměňují řetězce verzí.
  • Obě strany si vyměňují podporované algoritmy; vyberte nejsilnější vzájemnou šifru, KEX, MAC.
  • Key exchange — dnes typicky X25519 nebo NIST křivky. Obě strany odvozují sdílené tajemství, aniž by procházelo drátem v prostém textu.
  • Server odešle svůj hostitelský klíč podepsaný sdíleným tajemstvím. Klient kontroluje ~/.ssh/known_hosts.
  • Od tohoto okamžiku je vše šifrováno pomocí klíčů odvozených ze sdíleného tajemství.
  • Klient se ověřuje – heslem, veřejným klíčem nebo jiným mechanismem.
  • Šifrovaná relace je otevřená. Klient požaduje shell, přenos souborů, předávání portů nebo cokoli, co vlastně chce.
  • Metody ověřování

    • Heslo. Uživatel zadá heslo; je odeslána zašifrovaná v rámci relace. Jednoduchý, ale zranitelný vůči útokům nacpáním pověření proti exponovaným serverům SSH.
    • Veřejný klíč. Klient má soukromý klíč (typicky v ~/.ssh/id_ed25519); server má odpovídající veřejný klíč v ~/.ssh/authorized_keys. Klient prokáže vlastnictví soukromého klíče podpisem výzvy ze serveru. Síť neprochází žádné heslo. Doporučené výchozí nastavení pro téměř všechny případy použití.
    • Certificate based. CA podepisuje certifikát pro klíč uživatele, včetně vypršení platnosti a omezení. Servery důvěřují CA, automaticky důvěřují podepsaným certifikátům. Správný model pro organizace s mnoha uživateli; nahrazuje noční můru distribuce ssh-key.
    • FIDO2 / hardwarový klíč SSH. Nedávné OpenSSH podporuje klíče podporované hardwarovým bezpečnostním tokenem. Odolné proti phishingu, vyžaduje fyzické vlastnictví.
    • Multi-faktor — zkombinujte výše uvedené. Heslo + klíč nebo heslo + hardwarový token.

    Za shellovým přístupem: přesměrování portů

    SSH může tunelovat libovolný TCP provoz prostřednictvím šifrované relace:

    • PLZ821XPLZ:PLZ81X (X3) ssh -L 9000:interní:3306 uživatel@bastion otevře místní port 9000, který se tuneluje na internal:3306 přes hostitele bastionu. Užitečné pro dosažení interních služeb prostřednictvím skokového hostitele.
    • Vzdálené předávání portu (-R): opačný směr. Vzdálený hostitel získá port, který tuneluje zpět ke službě na vašem počítači.
    • Dynamické předávání portů (-D): SSH vytvoří na vašem místním počítači proxy SOCKS5. Jakákoli aplikace, na kterou je namířena, má svůj TCP provoz tunelovaný přes relaci SSH. Účinně je VPN pro jednoho uživatele přes SSH.

    SSH dynamické předávání je jedinou nejužitečnější VPN pro chudé lidi; každý, kdo má někde server, k němu má přístup.

    Ekosystém OpenSSH

    • ssh – klient
    • sshd – serverový démon
    • scp – nyní nahrazena zabezpečenou kopií (starší verze sftp, pod hood)
    • sftp — zabezpečený FTP, samostatný protokol, který běží uvnitř SSH
    • ssh-agent — ukládá dešifrované klíče do paměti, takže pro připojení nezadáváte hesloXPLZ21ZPLssh-key3XX2 páry klíčů
    • ssh-copy-id — zkopíruje váš veřejný klíč do vzdáleného souboru autorizovaných_klíčů

    Ochrana SSH serveru

    SSH server na veřejném internetu neustále kontroluje pověření. Obrana:

    • Zakázat ověřování heslem. Pouze veřejné klíče. Odstraní celý útočný vektor zaplňující pověření.
    • Použijte klíče Ed25519. Moderní, rychlý, malý. ssh-keygen -t ed25519 je správný příkaz pro nové klíče.
    • Použijte jiný než výchozí port. Marginal; většinou snižuje hluk protokolu skeneru.
    • fail2ban nebo sshguard — blokovat adresy IP po opakovaných neúspěšných pokusech.
    • Omezit uživatelské účty, které mohou SSH. AllowUsers v sshd_config.
    • Používejte VPN nebo Tailscale — vůbec nevystavujte SSH veřejnému internetu, pokud se tomu můžete vyhnout.
    • Audit známých_hostitelů a autorizovaných_klíčů. Odstraňte klíče pro odchozí zkontrolujte neočekávané položky.

    Často kladené otázky

    Jaký port používá SSH?
    22 standardně. Port je konfigurovatelný; někteří operátoři přesouvají SSH na nestandardní port, aby snížili přenos skenování v protokolech. Toto je bezpečnost prostřednictvím nejasností – užitečná pro hygienu, nikoli pro skutečnou bezpečnost. Skutečným zabezpečením je silná autentizace.
    Je SSH bezpečnější než HTTPS?
    Různé modely hrozeb. Oba používají moderní kryptografii a jsou v podstatě stejně bezpečné na úrovni protokolu. SSH se obvykle používá s ověřováním pomocí veřejného klíče (bez hesel, velmi silné), zatímco mnoho webů HTTPS stále používá ověřování heslem (ve výchozím nastavení slabší). Protokoly jsou rovnocenné; praxe nasazení se liší.
    Mohu pro přenos souborů použít SSH?
    Ano. <code>scp</code> a <code>sftp</code> běží přes SSH. SFTP je schopnější moderní volbou – obnovitelné přenosy, rekurzivní operace, atomické zápisy. <code>rsync</code> může také používat SSH jako svůj přenos a je tím správným nástrojem pro jakýkoli netriviální přenos.
    Co je to klíč SSH?
    Pár veřejný/soukromý klíč používaný pro ověření. Soukromý klíč je uložen v <code>~/.ssh/id_*</code> na vašem počítači; veřejný klíč se nainstaluje do <code>~/.ssh/authorized_keys</code> na servery, ke kterým se připojujete. Ztráta soukromého klíče bez přístupové fráze je vážný problém – kdokoli s ním se může přihlásit jako vy. Vždy chraňte klíče SSH pomocí přístupové fráze.
    Proč SSH říká 'host klíč změněn'?
    Identifikační klíč serveru se od vašeho posledního připojení změnil — buď byl server přestavěn, klíč byl otočen, nebo je něco špatně (nejvíce znepokojující případ: někdo se vydává za server). Nepřijímejte slepě nový klíč; ověřit mimo pásmo u operátora serveru. Pokud se jednalo o legitimní rotaci, odstraňte starý klíč ze známých_hostitelů a přijměte nový.
    Vysvětlení SSH: Jak Secure Shell nahradil Telnet a co je uvnitř každé relace SSH