SSH — Bezpečný vzdialený prístup
SSH (Secure Shell) je kryptografický protokol na bezpečnú komunikáciu medzi počítačmi. Je to základný nástroj každého DevOps inžiniera — bez SSH sa nedostaneš na žiadny server.
Ako SSH funguje?
SSH používa asymetrickú kryptografiu (public/private key pair) na autentifikáciu a symetrickú šifru na prenos dát. Štandardný port je 22/TCP.
# Základné pripojenie
ssh user@server.example.com
# Pripojenie na iný port
ssh -p 2222 user@server.example.com
# Pripojenie s konkrétnym kľúčom
ssh -i ~/.ssh/id_ed25519 user@server.example.com
SSH kľúče a authorized_keys
Password autentifikácia je slabá. Vždy používaj kľúče:
# Generovanie Ed25519 kľúča (odporúčaný)
ssh-keygen -t ed25519 -C "moj@email.com"
# Kopírovanie verejného kľúča na server
ssh-copy-id user@server.example.com
# Manuálne pridanie do authorized_keys
cat ~/.ssh/id_ed25519.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
SSH konfigurácia (~/.ssh/config)
Konfiguračný súbor šetrí čas a zjednodušuje pripojenia:
Host production
HostName 10.0.1.50
User deploy
Port 2222
IdentityFile ~/.ssh/prod_key
Host staging
HostName 10.0.2.50
User deploy
ProxyJump bastion
Tunely a port forwarding
SSH tunely umožňujú bezpečný prístup k službám za firewallom:
# Local port forwarding — pristúpiš na lokálny port, prenesie sa na remote
ssh -L 8080:localhost:3000 user@server
# Remote port forwarding — remote port smeruje na lokálnu službu
ssh -R 9090:localhost:8080 user@server
# Dynamic SOCKS proxy
ssh -D 1080 user@server
Jump hosty (Bastion)
V produkčných prostrediach sa na servery pristupuje cez bastion host:
# Priame použitie jump hosta
ssh -J bastion@jump.example.com user@internal-server
# Alebo v config súbore
Host internal-*
ProxyJump bastion
Hardening — Zabezpečenie SSH
Úpravy v /etc/ssh/sshd_config:
# Zakázať root login
PermitRootLogin no
# Zakázať password autentifikáciu
PasswordAuthentication no
# Povoliť len konkrétnych používateľov
AllowUsers deploy admin
# Zmeniť port (security through obscurity, ale pomáha)
Port 2222
# Idle timeout
ClientAliveInterval 300
ClientAliveCountMax 2
Po zmene vždy reštartuj: systemctl restart sshd
Best Practices
- Vždy Ed25519 kľúče — rýchlejšie a bezpečnejšie ako RSA
- Zakázať password login — eliminuje brute-force útoky
- Používať jump hosty — žiadny priamy prístup na interné servery
- Fail2ban — automatické blokovanie po neúspešných pokusoch
- SSH agent forwarding opatrne —
ssh -Alen keď naozaj treba - Pravidelná rotácia kľúčov — minimálne raz ročne
SSH je brána do tvojej infraštruktúry — zabezpeč ju ako prvú vec.