- 1 1. Úvod
- 2 2. Základní konfigurace SSH
- 3 Závěr
- 4 3. Posílení zabezpečení SSH
- 5 Závěr
- 6 4. Pokročilá konfigurace SSH
- 7 Závěr
- 8 5. Řešení problémů s SSH
- 9 Závěr
- 10 6. Často kladené otázky (FAQ)
- 10.1 6.1 Jak opravit problémy s časovým limitem SSH?
- 10.2 6.2 Co dělat, pokud zapomenete své SSH heslo?
- 10.3 6.3 Jak používat SSH ve Windows?
- 10.4 6.4 Jak nakonfigurovat SSH na Ubuntu WSL?
- 10.5 6.5 Další osvědčené postupy zabezpečení
- 10.6 6.6 Jak monitorovat SSH logy v reálném čase?
- 10.7 6.7 Tipy pro pohodlnější používání SSH
- 11 Závěr
1. Úvod
Konfigurace SSH na Ubuntu je nezbytná pro správu vzdálených serverů. SSH (Secure Shell) je protokol, který poskytuje bezpečné šifrované spojení, umožňující uživatelům přistupovat k serverům vzdáleně, spouštět příkazy a přenášet soubory.
Tento článek vysvětluje, jak konfigurovat SSH na Ubuntu, od základních kroků instalace po pokročilé bezpečnostní opatření.
1.1 Proč konfigurovat SSH na Ubuntu?
1.1.1 Co je SSH?
SSH (Secure Shell) je protokol, který umožňuje bezpečné spojení přes síť. Běžně se používá pro přihlášení do vzdálených serverů, přenos souborů a tunelování (předávání portů). Na rozdíl od tradičního Telnetu nebo FTP šifruje SSH veškerou komunikaci, což poskytuje silnou bezpečnost.
1.1.2 Kdy je SSH potřeba na Ubuntu
Běžné scénáře, kde se SSH používá pro vzdálenou správu Ubuntu, zahrnují:
- Správa cloudových serverů : Linuxové servery na AWS, GCP, Vultr a dalších se obvykle přistupují přes SSH.
- Vzdálené operace v prostředích LAN : Přístup k interním serverům nebo vývojovým strojům vzdáleně.
- Správa zařízení IoT : Ovládání vestavěných systémů, jako je Raspberry Pi, vzdáleně.
Ve výchozím nastavení je SSH server na Ubuntu vypnutý, takže jej musí být ručně nainstalován a nakonfigurován pro povolení přístupu přes SSH.
2. Základní konfigurace SSH
Pro použití SSH na Ubuntu musíte nainstalovat SSH server (OpenSSH) a správně jej nakonfigurovat. Tato sekce vysvětluje, jak nainstalovat SSH, upravit základní nastavení, nakonfigurovat firewall a připojit se k serveru.
2.1 Instalace a spuštění OpenSSH
2.1.1 Co je OpenSSH?
OpenSSH (Open Secure Shell) je open-source implementace protokolu SSH. Podporuje vzdálená připojení, bezpečný přenos souborů (SCP a SFTP) a předávání portů.
2.1.2 Instalace OpenSSH
Ubuntu neobsahuje SSH server ve výchozím nastavení, takže jej nainstalujte pomocí příkazu níže:
sudo apt update && sudo apt install -y openssh-server
Tento příkaz aktualizuje seznamy balíčků a nainstaluje OpenSSH server.
2.1.3 Spuštění SSH a povolení automatického spuštění
Po instalaci spusťte SSH server a povolte automatické spuštění:
sudo systemctl enable --now ssh
Možnost enable zajišťuje, že se SSH spustí automaticky při bootování OS.
2.1.4 Kontrola stavu SSH
Ověřte, zda SSH běží:
systemctl status ssh
Pokud výstup ukazuje active (running), SSH funguje normálně:
● ssh.service - OpenBSD Secure Shell server
Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2025-02-28 12:00:00 UTC; 5min ago
Pokud ukazuje inactive (dead) nebo failed, spusťte SSH ručně:
sudo systemctl start ssh
2.2 Konfigurace firewallu (UFW)
Ubuntu obsahuje jednoduchý firewall nazvaný ufw (Uncomplicated Firewall). Musíte povolit připojení SSH přes něj.
2.2.1 Kontrola stavu UFW
sudo ufw status
Příklad výstupu (neaktivní):
Status: inactive
Příklad výstupu (aktivní):
Status: active
To Action From
-- ------ ----
22/tcp ALLOW Anywhere
2.2.2 Povolení SSH
sudo ufw allow ssh
Nebo explicitně:
sudo ufw allow 22/tcp
2.2.3 Povolení UFW
sudo ufw enable
2.2.4 Ověření pravidel UFW
sudo ufw status verbose
Příklad:
Status: active
To Action From
-- ------ ----
22/tcp ALLOW Anywhere
22/tcp (v6) ALLOW Anywhere (v6)
2.3 Základní metody připojení SSH
Jakmile SSH běží, připojte se z klientského stroje.
2.3.1 Připojení z Linuxu/macOS
ssh username@server-ip-address
Příklad:
ssh user@192.168.1.100
Při prvním připojení se může zobrazit bezpečnostní varování:
.
The authenticity of host '192.168.1.100 (192.168.1.100)' can't be established.
ECDSA key fingerprint is SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.
Are you sure you want to continue connecting (yes/no)?
Zadejte yes pro pokračování.
2.3.2 Připojení z Windows
Můžete použít PowerShell nebo PuTTY.
Použití PowerShell (Windows 10+ obsahuje SSH):
ssh username@server-ip-address
Použití PuTTY:
- Stáhněte PuTTY z oficiální stránky
- Otevřete PuTTY a zadejte IP serveru do pole
Host Name (or IP address) - Vyberte
SSHjako typ připojení - Klikněte na Open a přihlaste se
Závěr
Tato sekce pokrývá základy nastavení SSH na Ubuntu:
- Jak nainstalovat a spustit OpenSSH
- Jak povolit SSH připojení pomocí UFW
- Jak se připojit z Linux/macOS a Windows
3. Posílení zabezpečení SSH
SSH je výkonný, ale ponechání výchozích nastavení zvyšuje bezpečnostní rizika. Útočníci často provádějí útoky hrubou silou nebo skenování portů. Posílení zabezpečení SSH je nezbytné.
3.1 Zakázat přihlášení root
Přihlášení jako root poskytuje plnou kontrolu nad systémem a je hlavním cílem útočníků. Jeho zakázání zvyšuje bezpečnost.
3.1.1 Kroky
- Upravit konfigurační soubor SSH:
sudo nano /etc/ssh/sshd_config
- Změnit řádek na:
PermitRootLogin no
- Restartovat SSH:
sudo systemctl restart ssh
- Ověřit změnu:
sudo grep PermitRootLogin /etc/ssh/sshd_config
Pokud výstup je PermitRootLogin no, nastavení bylo aplikováno.
3.2 Zakázat ověřování heslem a použít ověřování klíčem
Ověřování pomocí veřejného klíče je bezpečnější než hesla a snižuje riziko útoků hrubou silou.
3.2.1 Vytvoření SSH klíčů
ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa
Tím se vytvoří dva soubory:
- id_rsa (soukromý klíč) — uchovávejte lokálně, nesdílejte
- id_rsa.pub (veřejný klíč) — nahrajte na server
3.2.2 Nahrání veřejného klíče
ssh-copy-id username@server-ip-address
3.2.3 Zakázání ověřování heslem
sudo nano /etc/ssh/sshd_config
Upravit:
PasswordAuthentication no
Restartovat SSH:
sudo systemctl restart ssh
3.3 Povolit SSH přístup pouze konkrétním uživatelům
Pro zvýšení zabezpečení SSH můžete omezit přístup tak, aby se mohli přihlásit jen vybraní uživatelé.
3.3.1 Krok konfigurace
- Otevřít konfigurační soubor SSH
/etc/ssh/sshd_config:sudo nano /etc/ssh/sshd_config
- Přidat uživatele, kteří mají mít přístup přes SSH:
AllowUsers username1 username2
- Restartovat SSH pro aplikaci nastavení:
sudo systemctl restart ssh
3.4 Změna SSH portu
Protože port 22 je často cílem útočníků, změna výchozího portu může zvýšit bezpečnost.
3.4.1 Krok konfigurace
- Otevřít konfigurační soubor SSH:
sudo nano /etc/ssh/sshd_config
- Upravit nastavení portu, např.:
Port 2200
- Restartovat SSH:
sudo systemctl restart ssh
3.4.2 Aktualizace nastavení firewallu
Pokud změníte port, aktualizujte UFW:
sudo ufw allow 2200/tcp
Zkontrolovat nové pravidlo:
sudo ufw status
3.5 Zabránit útokům hrubou silou pomocí Fail2Ban
Fail2Ban detekuje neúspěšné pokusy o přihlášení a blokuje útočící IP adresu na určenou dobu.
3.5.1 Instalace Fail2Ban
sudo apt install fail2ban -y
3.5.2 Vytvoření konfiguračního souboru
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
Otevřít soubor:
sudo nano /etc/fail2ban/jail.local
Upravit nastavení:
[sshd]
enabled = true
port = 2200
maxretry = 3
findtime = 600
bantime = 3600
3.5.3 Restart Fail2Ban
sudo systemctl restart fail2ban
3.5.4 Zkontrolovat seznam blokací
sudo fail2ban-client status sshd
Závěr
Tato sekce vysvětlila metody pro zvýšení zabezpečení SSH:
.
- Zakázat přihlášení roota
- Zakázat ověřování heslem a povolit ověřování klíčem
- Omezit přístup SSH na konkrétní uživatele
- Změnit port SSH
- Použít Fail2Ban k blokování neautorizovaných pokusů
Implementace těchto nastavení pomáhá vytvořit bezpečné prostředí SSH.

4. Pokročilá konfigurace SSH
Jakmile je dokončena základní konfigurace SSH a zabezpečení, můžete přejít na pokročilé funkce pro lepší flexibilitu a bezpečnost. Tato sekce pokrývá správu ssh.socket (Ubuntu 22.10+), SSH tunely, naslouchání na více portech a řízení přístupu na základě IP.
4.1 Použití ssh.socket v Ubuntu 22.10+
V Ubuntu 22.10+ může být SSH spravováno pomocí ssh.socket místo ssh.service. Aktivace na základě socketu spouští SSH jen když je potřeba, čímž šetří systémové prostředky.
4.1.1 Zkontrolujte stav ssh.socket
sudo systemctl status ssh.socket
Příklad výstupu (povoleno):
● ssh.socket - OpenSSH Server Socket
Loaded: loaded (/lib/systemd/system/ssh.socket; enabled; vendor preset: enabled)
Active: active (listening) since Fri 2025-02-28 12:00:00 UTC
4.1.2 Povolit nebo zakázat ssh.socket
Povolit socket:
sudo systemctl enable --now ssh.socket
Přepnout zpět na klasický ssh.service:
sudo systemctl disable --now ssh.socket
sudo systemctl enable --now ssh.service
4.2 SSH tunelování (přesměrování portů)
SSH tunelování vytváří zabezpečené komunikační kanály mezi lokálními a vzdálenými systémy.
4.2.1 Lokální přesměrování portu
Užitečné pro bezpečné připojení k vzdáleným databázím nebo interním službám.
Příklad: Přístup ke vzdálenému MySQL serveru na portu 3306
ssh -L 3306:localhost:3306 username@server-ip-address
4.2.2 Reverzní přesměrování portu
Zveřejnit lokální služby přes vzdálený server.
Příklad: Publikovat lokální webový server na vzdáleném portu 8080
ssh -R 8080:localhost:80 username@server-ip-address
4.2.3 Dynamické přesměrování portu (SOCKS proxy)
Použijte SSH jako SOCKS proxy pro anonymní prohlížení.
ssh -D 1080 username@server-ip-address
4.3 Naslouchání na více portech
SSH může naslouchat na více než jednom portu pro flexibilitu v různých síťových prostředích.
4.3.1 Kroky konfigurace
- Upravit
/etc/ssh/sshd_config:sudo nano /etc/ssh/sshd_config
- Přidat více řádků
Port:Port 22 Port 2200
- Restartovat SSH:
sudo systemctl restart ssh
- Povolit nový port pomocí UFW:
sudo ufw allow 2200/tcp
4.4 Povolit SSH pouze z konkrétních IP adres
Omezení přístupu SSH podle IP adresy poskytuje silnou bezpečnostní kontrolu.
4.4.1 Konfigurace /etc/hosts.allow
sudo nano /etc/hosts.allow
Přidat povolenou IP adresu:
sshd: 192.168.1.100
4.4.2 Konfigurace /etc/hosts.deny
sudo nano /etc/hosts.deny
Zakázat všechny ostatní:
sshd: ALL
Závěr
Tato sekce pokrývala témata pokročilé konfigurace SSH:
- Správa
ssh.socketv Ubuntu 22.10+ - Používání SSH tunelů (přesměrování portů)
- Naslouchání na více SSH portech
- Omezení přístupu SSH na konkrétní IP adresy
Aplikace těchto konfigurací zvyšuje jak bezpečnost, tak použitelnost.
5. Řešení problémů s SSH
I při správné konfiguraci mohou SSH připojení občas selhat. Tato sekce vysvětluje běžné problémy SSH a jejich řešení.
5.1 Když se SSH nemůže připojit
Pokud SSH vrátí Connection refused nebo vyprší čas, možné příčiny zahrnují problémy se službou, špatnou konfiguraci portu nebo omezení firewallu.
5.1.1 Služba SSH neběží
sudo systemctl status ssh
Řešení:
- Pokud je
inactivenebofailed, restartujte SSH:sudo systemctl restart ssh
- Povolit automatické spouštění:
sudo systemctl enable ssh
5.1.2 Port SSH není otevřen
ssh -p 2200 username@server-ip-address
Zkontrolujte otevřené porty:
sudo netstat -tulnp | grep ssh
Nebo:
ss -tulnp | grep ssh
5.1.3 Firewall (UFW) blokující SSH
sudo ufw status
Povolit SSH:
sudo ufw allow 22/tcp
Pokud používáte vlastní port:
sudo ufw allow 2200/tcp
5.2 Chyby ověřování
5.2.1 Nesprávné uživatelské jméno nebo heslo
ssh username@server-ip-address
5.2.2 Veřejný klíč není správně nainstalován
cat ~/.ssh/authorized_keys
Ověřte, že odpovídá lokálnímu id_rsa.pub.
5.2.3 Nesprávná oprávnění adresáře .ssh
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
Také zajistěte:
chmod 755 /home/username
5.3 Nestabilní SSH připojení nebo neočekávané odpojení
5.3.1 Úprava ClientAliveInterval
ClientAliveInterval 60
ClientAliveCountMax 3
sudo systemctl restart ssh
5.3.2 Úprava nastavení lokálního klienta
Host *
ServerAliveInterval 60
ServerAliveCountMax 3
5.4 Prohlížení SSH logů
5.4.1 Zobrazení logů v reálném čase
sudo journalctl -u ssh -f
5.4.2 Zobrazení starších logů
sudo cat /var/log/auth.log | grep ssh
sudo grep "Failed password" /var/log/auth.log
Závěr
Tato sekce vysvětlila běžné problémy se SSH a jak je řešit:
- Zkontrolujte, zda běží služba SSH
- Ověřte otevřené porty
- Zkontrolujte nastavení firewallu
- Zajistěte správné ověřování klíčem
- Opravte problémy s časovým limitem a odpojením
- Analyzujte SSH logy
Většina problémů se SSH vzniká z nesprávné konfigurace nebo síťových omezení. Použijte tyto kroky pro odstraňování problémů k efektivnímu řešení.
6. Často kladené otázky (FAQ)
Tato sekce odpovídá na běžné otázky týkající se používání a konfigurace SSH.
6.1 Jak opravit problémy s časovým limitem SSH?
6.1.1 Nastavení na straně serveru
ClientAliveInterval 60
ClientAliveCountMax 3
sudo systemctl restart ssh
6.1.2 Nastavení na straně klienta
Host *
ServerAliveInterval 60
ServerAliveCountMax 3
6.2 Co dělat, pokud zapomenete své SSH heslo?
6.2.1 Pokud máte fyzický přístup
- Nabootujte do režimu jednoho uživatele (vyberte
recovery modev GRUBu) - Resetujte heslo:
passwd username
- Restartujte systém
6.2.2 Pokud fyzický přístup není možný (Cloud VPS)
- Použijte konzoli VPS poskytovanou hostingovou službou
- Použijte ověřování veřejným klíčem
6.3 Jak používat SSH ve Windows?
6.3.1 Použití PowerShell
ssh username@server-ip-address
6.3.2 Použití PuTTY
- Stáhněte a nainstalujte PuTTY
- Zadejte IP adresu serveru do
Host Name - Vyberte
SSHjako typ připojení - Přihlaste se pomocí uživatelského jména a hesla
6.4 Jak nakonfigurovat SSH na Ubuntu WSL?
6.4.1 Instalace SSH serveru
sudo apt update && sudo apt install openssh-server
6.4.2 Úprava nastavení SSH
PasswordAuthentication yes
Spusťte SSH ručně (WSL nepoužívá systemd):
sudo service ssh start
6.5 Další osvědčené postupy zabezpečení
6.5.1 Použití Fail2Ban
sudo apt install fail2ban -y
[sshd]
enabled = true
port = 22
maxretry = 3
findtime = 600
bantime = 3600
sudo systemctl restart fail2ban
6.5.2 Změna SSH portu
Port 2200
sudo ufw allow 2200/tcp
6.6 Jak monitorovat SSH logy v reálném čase?
sudo journalctl -u ssh -f
sudo cat /var/log/auth.log | grep ssh
6.7 Tipy pro pohodlnější používání SSH
6.7.1 Použití .ssh/config pro jednoduché přihlášení
Host myserver
HostName 192.168.1.100
User user
Port 2200
IdentityFile ~/.ssh/id_rsa
Poté se připojte pomocí:
ssh myserver
6.7.2 Použití ssh-agent
eval $(ssh-agent -s)
ssh-add ~/.ssh/id_rsa
Závěr
Tato sekce shrnula často kladené otázky související se SSH:
. Jak vyřešit problémy s časovým limitem SSH * Jak obnovit zapomenuté heslo * Jak používat SSH ve Windows a WSL * Nejlepší bezpečnostní postupy * Jak zkontrolovat logy SSH * Tipy, jak učinit SSH pohodlnějším pomocí .ssh/config*
Použitím těchto technik můžete vytvořit bezpečné a efektivní prostředí SSH a plynule spravovat vzdálené servery.



