Čo je to SSH (Secure Shell) a ako funguje bezpečný prístup na vzdialený počítač

SSH je šifrovaný protokol na bezpečné prihlásenie a správu vzdialených systémov. V článku vysvetlím základné princípy, autentifikáciu heslom a kľúčmi, tunelovanie, SFTP/SCP a praktické bezpečnostné odporúčania.
SSH (Secure Shell) je štandardný spôsob, ako sa bezpečne prihlásiť do vzdialeného počítača cez nezabezpečenú sieť (napríklad internet). Nahradilo staré nezabezpečené protokoly ako Telnet alebo rlogin tým, že všetku komunikáciu šifruje, overuje server aj klienta a chráni tak prihlasovacie údaje i prenášané dáta pred odpočúvaním a manipuláciou.
Ako SSH funguje v skratke
- Pri nadviazaní spojenia klient a server vykonajú šifrovaný handshake. Počas neho si vymenia a dohodnú kryptografické algoritmy (šifry, kľúčové výmeny, MAC pre integritu).
- Server predloží svoj verejný hostiteľský kľúč, ktorý klient uloží do súboru known_hosts. Pri ďalších pripojeniach sa overuje, či sa kľúč nezmenil (čo môže naznačovať útok typu „man-in-the-middle“).
- Autentifikácia klienta môže prebiehať heslom alebo verejným kľúčom (public key). Pri verejnom kľúči má klient súkromný kľúč, s ktorým sa autentifikuje bez odosielania hesla cez sieť.
- Po úspešnej autentifikácii vznikne šifrovaný kanál, cez ktorý možno bezpečne spúšťať príkazy, prenášať súbory alebo tunelovať sieťový prevádzku.
Typy autentifikácie
- Heslo: najjednoduchšie, ale zraniteľné voči hrubým silám a odpočúvaniu, ak nie sú správne nastavené ďalšie ochrany.
- Verejný/k privátny kľúč (public-key): bezpečnejší a odporúčaný spôsob. Generujete pár kľúčov (súkromný zostáva u vás, verejný nahráte na server do súboru ~/.ssh/authorized_keys). Pri autentifikácii sa použije kryptografický podpis, heslo sa neprenáša.
- Dvojfaktorová autentifikácia (2FA): kombinuje SSH kľúč alebo heslo s TOTP/OATH či hardvérovým kľúčom (YubiKey) pre vyššiu bezpečnosť.
Bežné formy použitia
- Interaktívny vzdialený prístup: prihlásenie na shell pomocou príkazu ssh user@host.
- Prenos súborov: SCP (scp) a SFTP (sftp) sú na SSH založené protokoly na bezpečný prenos súborov.
- Tunelovanie a port forwarding: SSH môže presmerovať lokálny port na vzdialený (local forwarding), vzdialený port na lokálny (remote forwarding) alebo vytvoriť dynamický SOCKS proxy (dynamic forwarding). To umožní bezpečný prístup k vnútorným sieťam alebo šifrovanie prevádzky aplikácií.
- Git a iné služby: mnoho nástrojov komunikuje cez SSH (napr. git push/pull), čím zabezpečuje autentifikáciu a šifrovanie.
Verejné kľúče a typy kľúčov
Dnes sa odporúčajú modernejšie algoritmy ako Ed25519 alebo ECDSA pred staršími RSA (aj keď RSA stále funguje). Príklad generovania kľúča: ssh-keygen -t ed25519 -C "[email protected]". Kľúč chráňte silnou passphrase; ak používate bezheslové kľúče, buďte opatrní s ich uložením.
Praktické nastavenie (základné kroky)
- Na klientovi vygenerujte pár kľúčov: ssh-keygen -t ed25519
- Skopírujte verejný kľúč na server: ssh-copy-id user@server alebo manuálne pridať obsah id_ed25519.pub do ~/.ssh/authorized_keys na serveri.
- Uistite sa, že práva súborov sú správne: adresár ~/.ssh 700, authorized_keys 600.
- Test pripojenia: ssh user@server
- Voliteľne na serveri v súbore /etc/ssh/sshd_config nastavte: PasswordAuthentication no (ak chcete povoliť len kľúče), PermitRootLogin no, Port (zmena portu) a reštartujte sshd.
Bezpečnostné odporúčania
- Používajte verejno‑súkromné kľúče, nie heslá, a chráňte súkromný kľúč passphrase.
- Zakážte prihlásenie ako root cez SSH a vytvorte si účet s obmedzenými právami, ktorý potom použijete s sudo.
- Obmedzte prístup cez firewall (napr. UFW) len na potrebné IP adresy, ak je to možné.
- Nasadiť nástroje ako fail2ban, ktoré blokujú opakované neúspešné pokusy o prihlásenie.
- Overujte fingerprint serverového kľúča pri prvom pripojení, aby ste sa vyhli MITM útokom.
- Neukladajte súkromné kľúče na verejné alebo zdieľané úložiská.
- Buďte opatrní s agent forwardingom (ssh-agent -A alebo ForwardAgent yes) — môže byť zneužitý, ak sa prihlásite na kompromitovaný server.
Riziká a bežné chyby
- Neregenerované staré kľúče alebo zle nastavené práva môžu viesť k úniku prístupu.
- Otvorený port 22 bez ďalších obmedzení láka brute‑force útoky.
- Agent forwarding a slabé práva môžu umožniť útočníkovi preniknúť ďalej do vašej siete.
Ako zistiť, či je spojenie bezpečné
Pri prvom pripojení SSH vypíše fingerprint hostiteľského kľúča. Overte ho proti údajom od správcu servera. Pri zmene kľúča vás SSH upozorní — nepokračujte bez overenia. Pravidelne sledujte logy (napr. /var/log/auth.log) pre neobvyklé prihlásenia.
Záverom
SSH je univerzálny a mimoriadne užitočný nástroj pre bezpečnú správu vzdialených serverov a prenos dát. Správnou konfiguráciou (kľúče namiesto hesiel, správne práva, firewall, monitoring) dosiahnete vysokú úroveň bezpečnosti. Pre bežného používateľa je najpraktickejší postup: vygenerovať moderný kľúč (Ed25519), nastaviť passphrase, skopírovať verejný kľúč na server a zakázať prihlasovanie heslom.





