- 1 1. Úvod
- 2 2. Základní konfigurace SSH
- 3 3. Zvyšování bezpečnosti SSH
- 4 Shrnutí
- 5 4. Pokročilá konfigurace SSH
- 6 Shrnutí
- 7 5. Řešení problémů s SSH
- 8 Shrnutí
- 9 6. FAQ (Často kladené otázky)
- 9.1 6.1 Jak zabránit časovým limitům SSH?
- 9.2 6.2 Co dělat, když zapomenu své SSH heslo?
- 9.3 6.3 Jak používat SSH na Windows?
- 9.4 6.4 Jak nastavit SSH v Ubuntu WSL (Windows Subsystem for Linux)?
- 9.5 6.5 Jaká další bezpečnostní opatření bych měl přijmout?
- 9.6 6.6 Jak sledovat SSH logy v reálném čase?
- 9.7 6.7 Jak učinit SSH pohodlnějším?
- 10 Shrnutí
- 11 Související články
1. Úvod
Nastavení SSH na Ubuntu je nezbytné pro správu vzdálených serverů. SSH (Secure Shell) je protokol, který poskytuje zabezpečenou šifrovanou komunikaci a je široce používán pro přístup k vzdáleným serverům, spouštění příkazů a přenos souborů.
V tomto průvodci se budeme věnovat všemu od základní instalace až po pokročilá bezpečnostní nastavení SSH na Ubuntu.
1.1 Proč nastavit SSH na Ubuntu?
1.1.1 Co je SSH?
SSH (Secure Shell) je protokol navržený pro bezpečnou komunikaci přes síť. Běžně se používá pro přihlašování k vzdáleným serverům, přenos souborů a tunelování (přesměrování portů). Na rozdíl od tradičních protokolů jako Telnet nebo FTP šifruje SSH veškerou komunikaci, což zajišťuje vysokou úroveň zabezpečení.
1.1.2 Kdy potřebujete SSH na Ubuntu?
SSH je užitečné pro vzdálenou správu v různých scénářích, například:
- Správa cloudových serverů – cloudové služby jako AWS, GCP a Vultr používají SSH pro přístup k vzdáleným serverům.
- Vzdálené operace v LAN prostředí – přístup k interním serverům nebo vývojovým strojům přes SSH pro práci na dálku.
- Správa IoT zařízení – vzdálené ovládání vestavěných zařízení jako Raspberry Pi.
Ve výchozím nastavení je SSH na Ubuntu zakázáno. Abyste jej mohli používat, musíte jej nainstalovat a ručně nakonfigurovat.
2. Základní konfigurace SSH
Pro použití SSH na Ubuntu musíte nainstalovat SSH server (OpenSSH) a správně jej nakonfigurovat. Tato sekce pokrývá instalaci, základní nastavení, konfiguraci firewallu a způsob připojení k vašemu 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í, zabezpečené přenosy souborů (SCP a SFTP) a přesměrování portů.
2.1.2 Instalace OpenSSH
Ve výchozím nastavení Ubuntu neobsahuje předinstalovaný SSH server. Použijte následující příkaz k jeho instalaci:
sudo apt update && sudo apt install -y openssh-server
Tento příkaz aktualizuje seznam balíčků a nainstaluje server OpenSSH.
2.1.3 Spuštění a povolení SSH serveru
Po instalaci spusťte SSH server a povolte jeho automatické spouštění při startu systému.
sudo systemctl enable --now ssh
Volba enable zajistí, že se SSH spustí automaticky při bootování OS.
2.1.4 Ověření stavu SSH
Pro kontrolu, zda SSH server běží, použijte:
systemctl status ssh
Pokud uvidíte výstup podobný následujícímu, SSH běží správně:
● 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 uvidíte inactive (dead) nebo failed, spusťte službu ručně:
sudo systemctl start ssh
2.2 Konfigurace firewallu (UFW)
Ubuntu poskytuje ufw (Uncomplicated Firewall) pro snadnou správu firewallu. Musíte nakonfigurovat UFW tak, aby povoloval SSH připojení.
2.2.1 Kontrola stavu UFW
Zkontrolujte aktuální stav firewallu pomocí:
sudo ufw status
Příklad výstupu (pokud je UFW vypnutý):
Status: inactive
Příklad výstupu (pokud je UFW zapnutý):
Status: active
To Action From
-- ------ ----
22/tcp ALLOW Anywhere
2.2.2 Povolení SSH provozu
Pro povolení SSH připojení na výchozím portu 22 spusťte:
sudo ufw allow ssh
Případně můžete port specifikovat explicitně:
sudo ufw allow 22/tcp
2.2.3 Povolení UFW
Pokud je UFW vypnutý, povolte jej pomocí:
sudo ufw enable
Před povolením UFW se ujistěte, že je SSH povoleno, jinak si můžete zablokovat přístup.
2.2.4 Ověření nastavení UFW
Zkontrolujte, zda jsou pravidla firewallu aplikována správně:
sudo ufw status verbose
Příklad výstupu:
Status: active
To Action From
-- ------ ----
22/tcp ALLOW Anywhere
22/tcp (v6) ALLOW Anywhere (v6)
If you see this, SSH is allowed through the firewall.
2.3 Připojení k SSH
Jakmile je SSH server spuštěn, můžete se připojit z klientského PC.
2.3.1 Připojení z Linuxu/macOS
V Linuxu nebo macOS otevřete terminál a spusťte:
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í jako toto:
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 a stiskněte Enter pro pokračování.
2.3.2 Připojení z Windows
Ve Windows můžete použít PowerShell nebo PuTTY k připojení přes SSH.
Použití PowerShell
Windows 10 a novější obsahují SSH klienta v PowerShellu. Připojte se pomocí:
ssh username@server-ip-address
Použití PuTTY
- Stáhněte a nainstalujte PuTTY z oficiální stránky .
- Otevřete PuTTY a zadejte IP adresu serveru do pole
Host Name (or IP address). - Nastavte
Connection typenaSSHa klikněte naOpen. - Zadejte své uživatelské jméno a heslo pro připojení.
3. Zvyšování bezpečnosti SSH
SSH je výkonný nástroj pro vzdálený přístup, ale pokud jej necháte s výchozími nastaveními, může představovat bezpečnostní rizika. Útočníci často cílí na SSH servery pomocí útoků hrubou silou nebo skenování portů. Pro vytvoření bezpečnějšího prostředí SSH je nutné použít správná bezpečnostní nastavení.
3.1 Zakázání přihlášení jako root
Ve výchozím nastavení může Ubuntu povolit přihlášení rootem přes SSH. Protože účet root má plná systémová oprávnění, je častým cílem útočníků. Zakázání přihlášení rootem a místo toho používání běžného uživatelského účtu výrazně zvyšuje bezpečnost.
3.1.1 Kroky konfigurace
- Upravit konfigurační soubor SSH
/etc/ssh/sshd_config.sudo nano /etc/ssh/sshd_config
- Najděte následující řádek a změňte jej na
PermitRootLogin no.PermitRootLogin no
- Uložte soubor a restartujte službu SSH.
sudo systemctl restart ssh
- Ověřte, že nastavení bylo použito.
sudo grep PermitRootLogin /etc/ssh/sshd_config
Pokud výstup ukazuje PermitRootLogin no, nastavení bylo úspěšně aplikováno.
3.2 Zakázání ověřování heslem a povolení ověřování veřejným klíčem
Používání ověřování veřejným klíčem je mnohem bezpečnější než spoléhat se na ověřování heslem. S ověřováním veřejným klíčem nemusíte zadávat heslo, což snižuje riziko útoků hrubou silou.
3.2.1 Vytvoření páru SSH klíčů
Na svém lokálním PC vytvořte pár SSH klíčů:
ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa
Tím se vytvoří dva soubory:
- Soukromý klíč (
id_rsa) → Uchovejte jej na svém lokálním PC (nikdy jej nesdílejte veřejně). - Veřejný klíč (
id_rsa.pub) → Zkopírujte jej na server.
3.2.2 Kopírování veřejného klíče na server
Použijte následující příkaz pro zkopírování veřejného klíče na server:
ssh-copy-id username@server-ip-address
3.2.3 Zakázání ověřování heslem
Upravte konfigurační soubor SSH:
sudo nano /etc/ssh/sshd_config
Najděte následující řádek a změňte jej na:
PasswordAuthentication no
Restartujte SSH, aby se změny projevily:
sudo systemctl restart ssh
3.3 Omezení přístupu SSH na konkrétní uživatele
Pro zvýšení bezpečnosti můžete omezit přístup SSH na konkrétní uživatele.
3.3.1 Kroky konfigurace
- Otevřete konfigurační soubor SSH.
sudo nano /etc/ssh/sshd_config
- Přidejte následující řádek s výčtem povolených uživatelů.
AllowUsers user1 user2
- Restartujte SSH, aby se změny projevily.
sudo systemctl restart ssh
3.4 Změna portu SSH
Výchozí port SSH (22) je často cílem útočníků. Změna na nestandardní port může snížit riziko automatizovaných útoků.
3.4.1 Kroky konfigurace
- Otevřete konfigurační soubor SSH.
sudo nano /etc/ssh/sshd_config
- Najděte následující řádek a změňte jej na vlastní port (např.
2200).Port 2200
- Uložte soubor a restartujte SSH.
sudo systemctl restart ssh
3.4.2 Aktualizace nastavení firewallu
Po změně SSH portu povolte nový port přes UFW:
sudo ufw allow 2200/tcp
Ověřte nastavení:
sudo ufw status
3.5 Zabránění útokům hrubou silou pomocí Fail2Ban
Fail2Ban je nástroj, který detekuje neúspěšné pokusy o přihlášení přes SSH a dočasně blokuje útočící IP adresu.
3.5.1 Instalace Fail2Ban
sudo apt install fail2ban -y
3.5.2 Vytvoření konfiguračního souboru
Zkopírujte výchozí konfigurační soubor:
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
Upravte konfigurační soubor:
sudo nano /etc/fail2ban/jail.local
Upravte sekci SSH následovně:
[sshd]
enabled = true
port = 2200
maxretry = 3
findtime = 600
bantime = 3600
3.5.3 Restartování Fail2Ban
Restartujte Fail2Ban, aby se změny projevily:
sudo systemctl restart fail2ban
3.5.4 Kontrola seznamu blokací
Pro kontrolu, které IP adresy jsou zablokovány:
sudo fail2ban-client status sshd
Shrnutí
V této sekci jsme pokryli základní vylepšení zabezpečení SSH, včetně:
- Zakázání přihlášení jako root
- Zakázání ověřování heslem a povolení ověřování veřejným klíčem
- Omezení přístupu SSH na konkrétní uživatele
- Změna SSH portu
- Použití Fail2Ban k blokování útoků hrubou silou
Implementací těchto opatření můžete vytvořit bezpečnější prostředí SSH.
4. Pokročilá konfigurace SSH
Po nastavení zabezpečení SSH můžete využít pokročilá nastavení ke zlepšení použitelnosti a bezpečnosti. Tato sekce se zabývá správou ssh.socket v Ubuntu 22.10 a novějším, SSH tunelováním (přesměrováním portů), nastavením více SSH portů a omezením přístupu SSH na konkrétní IP adresy.
4.1 Použití ssh.socket v Ubuntu 22.10 a novějším
Od Ubuntu 22.10 může správa služby SSH přejít z ssh.service na ssh.socket. To umožňuje, aby se SSH spouštělo dynamicky při přijetí požadavku na připojení, čímž se snižuje využití zdrojů.
4.1.1 Kontrola stavu ssh.socket
Pro kontrolu, zda je ssh.socket povoleno, spusťte:
sudo systemctl status ssh.socket
Příklad výstupu (pokud je 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 Povolení nebo zakázání ssh.socket
Pokud je ssh.socket zakázáno, povolte jej pomocí:
sudo systemctl enable --now ssh.socket
Pro návrat k tradičnímu ssh.service zakázat ssh.socket a místo toho povolit 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í umožňuje bezpečný přenos dat mezi vzdáleným serverem a lokálním počítačem, obcházející externí sítě.
4.2.1 Lokální přesměrování portu
Užitečné pro bezpečný přístup k vzdáleným databázím nebo webovým serverům.
Příklad: Připojení k vzdálenému MySQL serveru (port 3306) z vašeho lokálního PC
ssh -L 3306:localhost:3306 username@server-ip-address
4.2.2 Vzdálené přesměrování portu
Zveřejní lokální službu na vzdáleném serveru přes SSH.
Příklad: Přesměrování lokálního webového serveru (port 80) na port 8080 na vzdáleném serveru
ssh -R 8080:localhost:80 username@server-ip-address
4.2.3 Dynamické přesměrování portu
Promění SSH na SOCKS proxy pro anonymní prohlížení webu.
Příklad: Vytvoření SOCKS proxy na lokálním portu 1080
ssh -D 1080 username@server-ip-address
4.3 Poslouchání na více SSH portech
Ve výchozím nastavení SSH naslouchá na jednom portu (port 22). Konfigurace více portů poskytuje větší flexibilitu přístupu.
4.3.1 Kroky konfigurace
- Upravte konfigurační soubor SSH.
sudo nano /etc/ssh/sshd_config
- Přidejte více položek portu.
Port 22 Port 2200
- Restartujte SSH.
sudo systemctl restart ssh
- Povolit nový port ve firewallu.
sudo ufw allow 2200/tcp
4.4 Omezení přístupu SSH na konkrétní IP adresy
Pro zvýšení bezpečnosti můžete omezit přístup SSH na konkrétní IP adresy.
4.4.1 Konfigurace /etc/hosts.allow
Povolte přístup SSH pouze z určitých IP adres úpravou:
sudo nano /etc/hosts.allow
Přidejte následující řádek (nahraďte 192.168.1.100 povolenou IP adresou):
sshd: 192.168.1.100
4.4.2 Konfigurace /etc/hosts.deny
Pro blokování všech ostatních IP adres ve výchozím nastavení:
sudo nano /etc/hosts.deny
sshd: ALL
Tím se zajistí, že pouze IP adresy uvedené v hosts.allow mohou přistupovat k SSH.
Shrnutí
Tato sekce pokrývala pokročilá nastavení SSH, včetně:
- Správa
ssh.socketv Ubuntu 22.10 a novějším - Používání SSH tunelování (přesměrování portů) pro zabezpečená spojení
- Poslouchání na více SSH portech
- Omezení přístupu SSH na konkrétní IP adresy
Aplikace těchto nastavení zlepšuje bezpečnost a použitelnost SSH.
5. Řešení problémů s SSH
I při správné konfiguraci se mohou vyskytnout problémy se SSH. Tato sekce poskytuje řešení běžných problémů se SSH.
5.1 Nelze se připojit k SSH
Pokud obdržíte chybu Connection refused nebo časový limit, zkontrolujte následující.
5.1.1 Služba SSH neběží
Ověřte stav služby SSH:
sudo systemctl status ssh
Řešení:
- Pokud je
Active: inactive (dead)nebofailed, restartujte SSH.sudo systemctl restart ssh
- Povolte automatické spouštění SSH.
sudo systemctl enable ssh
5.1.2 Firewall blokuje SSH
Ujistěte se, že SSH je povoleno přes UFW:
sudo ufw status
Řešení: Pokud SSH není povoleno:
sudo ufw allow 22/tcp
Pokud používáte vlastní port:
sudo ufw allow 2200/tcp
5.2 Chyby autentizace
Pokud SSH odmítá pokusy o přihlášení, zkontrolujte následující:
5.2.1 Nesprávné uživatelské jméno nebo heslo
Ujistěte se, že používáte správné uživatelské jméno:
ssh username@server-ip-address
5.2.2 Problémy s autentizací veřejným klíčem
Ověřte, že váš veřejný klíč je správně uložen v ~/.ssh/authorized_keys.
cat ~/.ssh/authorized_keys
5.2.3 Nesprávná oprávnění
Ujistěte se, že adresář a soubory SSH mají správná oprávnění:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
Shrnutí
Tato sekce pokrývala běžné problémy se SSH a jejich řešení, včetně:
- Kontrola, zda SSH běží
- Zajištění, že firewall neblokuje SSH
- Řešení problémů s autentizací
Použijte tyto kroky pro rychlé řešení problémů s připojením SSH.
6. FAQ (Často kladené otázky)
Tato sekce se zabývá běžnými otázkami týkajícími se SSH a řešeními pro zlepšení vašeho SSH zážitku při zachování bezpečnosti.
6.1 Jak zabránit časovým limitům SSH?
Pokud se SSH spojení odpojí po určité době nečinnosti, vyzkoušejte následující nastavení.
6.1.1 Konfigurace na straně serveru
Upravte /etc/ssh/sshd_config a přidejte:
ClientAliveInterval 60
ClientAliveCountMax 3
Restartujte SSH pro aplikaci změn:
sudo systemctl restart ssh
6.1.2 Konfigurace na straně klienta
Upravte lokální konfigurační soubor SSH ~/.ssh/config:
Host *
ServerAliveInterval 60
ServerAliveCountMax 3
6.2 Co dělat, když zapomenu své SSH heslo?
6.2.1 Pokud máte fyzický přístup k serveru
- Nabootujte do režimu obnovy přes GRUB menu.
- Resetujte heslo následujícím příkazem:
passwd username
- Restartujte systém.
6.2.2 Pokud nemáte fyzický přístup k serveru (např. Cloud VPS)
- Použijte konzolovou funkci poskytovatele cloudu pro přístup k serveru.
- Nastavte autentizaci pomocí SSH klíče místo spoléhaní se na hesla.
6.3 Jak používat SSH na Windows?
6.3.1 Použití PowerShell
Windows 10 a novější obsahují vestavěného SSH klienta. Otevřete PowerShell a spusťte:
ssh username@server-ip-address
6.3.2 Použití PuTTY
- Stáhněte a nainstalujte PuTTY .
- Zadejte IP adresu serveru do
Host Name (or IP address). - Vyberte
SSHjako typ připojení a klikněte naOpen. - Přihlaste se pomocí svého uživatelského jména a hesla.
6.4 Jak nastavit SSH v Ubuntu WSL (Windows Subsystem for Linux)?
Pro povolení SSH ve WSL postupujte podle těchto kroků.
6.4.1 Instalace SSH serveru
sudo apt update && sudo apt install openssh-server
6.4.2 Konfigurace SSH
Upravte /etc/ssh/sshd_config a povolte ověřování heslem:
PasswordAuthentication yes
Protože WSL ve výchozím nastavení nepoužívá systemd, spusťte SSH ručně:
sudo service ssh start
6.5 Jaká další bezpečnostní opatření bych měl přijmout?
6.5.1 Instalace Fail2Ban
Zabraňte útokům hrubou silou instalací Fail2Ban:
sudo apt install fail2ban -y
Upravte konfigurační soubor /etc/fail2ban/jail.local:
[sshd]
enabled = true
port = 22
maxretry = 3
findtime = 600
bantime = 3600
Restartujte Fail2Ban:
sudo systemctl restart fail2ban
6.5.2 Změna portu SSH
Upravte /etc/ssh/sshd_config pro změnu výchozího portu SSH:
Port 2200
Restartujte SSH a aktualizujte nastavení firewallu:
sudo ufw allow 2200/tcp
6.6 Jak sledovat SSH logy v reálném čase?
Pro zobrazení SSH logů v reálném čase použijte:
sudo journalctl -u ssh -f
Pro kontrolu starších logů:
sudo cat /var/log/auth.log | grep ssh
6.7 Jak učinit SSH pohodlnějším?
6.7.1 Použití .ssh/config pro snadné přihlášení
Uložte často používaná SSH připojení do ~/.ssh/config:
Host myserver
HostName 192.168.1.100
User user
Port 2200
IdentityFile ~/.ssh/id_rsa
Nyní se můžete připojit pomocí:
ssh myserver
6.7.2 Použití ssh-agent k vyhnutí se opakovanému zadávání hesla
Spusťte:
eval $(ssh-agent -s)
ssh-add ~/.ssh/id_rsa
To umožňuje SSH připojení bez nutnosti zadávat heslo pokaždé.
Shrnutí
Tato sekce poskytla odpovědi na běžné otázky týkající se SSH, zahrnující:
- Zabránění časovým limitům SSH
- Obnovení po zapomenutém hesle
- Používání SSH na Windows a WSL
- Aplikaci dalších bezpečnostních opatření
- Sledování SSH logů
- Zpříjemnění používání SSH
Dodržením těchto tipů můžete vytvořit bezpečné a efektivní SSH prostředí pro vzdálenou správu serverů.
Související články
1. Úvod Pomocí SSH na Ubuntu můžete bezpečně přistupovat a spravovat svůj server nebo PC na dálku. Tento průvodce vysvět[…]


![Jak zkontrolovat, změnit a přepnout verze Pythonu v Ubuntu [Kompletní průvodce]](https://www.linux.digibeatrix.com/wp-content/uploads/2025/02/36b84d2ec91b0993972a29a44e5757c7-375x214.webp)
![Jak zjistit verzi CUDA v Ubuntu [Jednoduchý návod s příkazy]](https://www.linux.digibeatrix.com/wp-content/uploads/2025/03/7ad0e7fe124605dc3cd746565dc1d108-375x214.webp)