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ětluje vše od základů SSH po instalaci SSH serveru na Ubuntu, bezpečnostní opatření a řešení problémů. Je navržen tak, aby byl přátelský pro začátečníky a snadno srozumitelný.
Co je SSH?
SSH (Secure Shell) je protokol, který umožňuje bezpečné vzdálené připojení přes síť. Na rozdíl od tradičního Telnetu nebo FTP šifruje SSH data, což výrazně snižuje riziko odposlechu a manipulace.
Hlavní použití SSH na Ubuntu
SSH se běžně používá na Ubuntu pro následující účely:
- Správa serveru na dálku : Ovládejte Ubuntu server z vzdáleného místa.
- Přenos souborů : Bezpečně přenášejte soubory pomocí SCP nebo SFTP.
- Přesměrování portů : Založte bezpečné vzdálené připojení.
Co se naučíte v tomto průvodci
- Základní koncepty a fungování SSH
- Jak nainstalovat SSH server na Ubuntu
- Nastavení SSH připojení a řešení problémů
- Bezpečnostní opatření pro SSH
2. Základní koncepty SSH
Pro efektivní použití SSH je důležité pochopit jeho základní koncepty. Tato sekce vysvětluje, jak SSH funguje, a různé metody autentizace.
Jak SSH funguje
SSH je protokol, který naváže bezpečné připojení mezi klientem a serverem. Ve výchozím nastavení používá TCP port 22 pro šifrovanou komunikaci.
Hlavní funkce
- Vzdálené přihlášení : Spouštějte příkazy na serveru.
- Přenos souborů : Bezpečně odesílejte data pomocí SCP nebo SFTP.
- Přesměrování portů : Připojte se k jiným službám přes SSH.
Metody autentizace SSH
SSH podporuje především dvě metody autentizace:
Autentizace heslem
- Přihlášení pomocí uživatelského jména a hesla.
- Snadno použitelné, ale zranitelné vůči útokům hrubou silou.
Autentizace veřejným klíčem
- Autentizace pomocí páru veřejného a soukromého klíče.
- Bezpečnější a doporučené před autentizací heslem.
Výhody SSH
- Šifrování dat : Chrání komunikaci před odposlechem.
- Snadná správa na dálku : Přístupné odkudkoli.
- Zvýšená bezpečnost : Pomáhá zabránit neoprávněnému přístupu.
3. Instalace SSH serveru na Ubuntu
Pro použití SSH na Ubuntu musíte nainstalovat OpenSSH server. Tato sekce vysvětluje kroky instalace a základní konfigurace.
Instalace OpenSSH serveru
OpenSSH server můžete nainstalovat na Ubuntu následujícím příkazem:
sudo apt update
sudo apt install openssh-server
Po instalaci zkontrolujte, zda SSH služba běží:
sudo systemctl status ssh
Spuštění a kontrola SSH služby
Pro manuální spuštění nebo zastavení SSH služby použijte následující příkazy:
# Start SSH
sudo systemctl start ssh
# Enable SSH to start automatically on reboot
sudo systemctl enable ssh
# Stop SSH
sudo systemctl stop ssh
Konfigurace UFW (Uncomplicated Firewall)
Pokud je UFW ve výchozím nastavení povoleno, SSH připojení mohou být blokována. Povolte přístup k SSH spuštěním:
sudo ufw allow ssh
sudo ufw enable
4. Konfigurace SSH připojení
Pro bezpečné použití SSH je nezbytná správná konfigurace. Tato sekce vysvětluje, jak nastavit autentizaci veřejným klíčem.
Generování páru klíčů
Na straně klienta spusťte následující příkaz pro vytvoření páru veřejného a soukromého klíče:
ssh-keygen -t rsa -b 4096
Ve výchozím nastavení je soukromý klíč uložen v ~/.ssh/id_rsa a veřejný klíč v ~/.ssh/id_rsa.pub.
Kopírování veřejného klíče na server
Přeneste vygenerovaný veřejný klíč na SSH server:
ssh-copy-id username@server-ip
Nebo ručně zkopírujte klíč pomocí SCP:
scp ~/.ssh/id_rsa.pub username@server-ip:~/
Na serveru přesuňte veřejný klíč do správné složky:
mkdir -p ~/.ssh
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
rm ~/id_rsa.pub
Úprava souboru sshd_config
Zvýšte bezpečnost úpravou konfiguračního souboru SSH:
sudo nano /etc/ssh/sshd_config
Aktualizujte následující nastavení:
# Disable password authentication (enable public key authentication only)
PasswordAuthentication no
# Disable root login
PermitRootLogin no
# Change the default SSH port (example: 2222)
Port 2222
Po provedení změn restartujte službu SSH:
sudo systemctl restart ssh
5. Připojení k serveru SSH
Jakmile je server SSH nastaven, musíte se k němu připojit z klientského počítače. Tato sekce vysvětluje základní metody připojení SSH a zpracování změn portů.
Základní příkaz pro připojení SSH
K připojení k serveru SSH z klienta použijte:
ssh username@server-ip
Například, pokud je IP serveru 192.168.1.10 a uživatelské jméno je ubuntu, zadejte:
ssh ubuntu@192.168.1.10
Při prvním připojení uvidíte výzvu k ověření otisku prstu. Zadejte „yes“ pro přijetí a pokračování.
Připojení s vlastním portem
Pokud byl výchozí port (22) změněn, zadejte port pomocí volby -p:
ssh -p 2222 ubuntu@192.168.1.10
Připojení s privátním klíčem
Pokud používáte autentizaci veřejným klíčem, zadejte privátní klíč pomocí volby -i:
ssh -i ~/.ssh/id_rsa ubuntu@192.168.1.10
Spouštění vzdálených příkazů přes SSH
Můžete spustit vzdálené příkazy bez interaktivního přihlášení na server:
ssh ubuntu@192.168.1.10 "ls -lah /home/ubuntu"
To je užitečné pro automatizaci a vzdálenou správu.
Přenos souborů pomocí SCP
Použijte SSH k přenosu souborů mezi lokálním PC a vzdáleným serverem.
Z lokálního na vzdálený
scp filename username@server-ip:/remote/directory
Příklad:
scp myfile.txt ubuntu@192.168.1.10:/home/ubuntu/
Z vzdáleného na lokální
scp username@server-ip:/remote/file ./local/directory
Příklad:
scp ubuntu@192.168.1.10:/home/ubuntu/myfile.txt ./
Správa souborů pomocí SFTP
Použijte SFTP pro správu souborů přes SSH:
sftp ubuntu@192.168.1.10
Po připojení můžete použít příkazy jako:
ls # List files
cd # Change directory
put file # Upload file from local to remote
get file # Download file from remote to local
exit # Exit SFTP session
6. Řešení problémů s připojením SSH
Problémy s připojením SSH jsou běžné. Tato sekce pokrývá typické problémy a jejich řešení.
Běžné chyby připojení SSH a jejich opravy
Pokud se SSH nepodaří připojit, zvažte následující příčiny:
1. Server SSH neběží
Zkontrolujte, zda je server SSH aktivní:
sudo systemctl status ssh
Řešení:
- Pokud server neběží, spusťte ho pomocí:
sudo systemctl start ssh
- Zajistěte, aby se SSH spouštěl automaticky při restartu:
sudo systemctl enable ssh
2. Firewall (UFW) blokuje SSH
Pokud je povolen UFW (Uncomplicated Firewall), může blokovat přístup SSH.
Řešení:
- Zkontrolujte aktuální nastavení UFW:
sudo ufw status
- Povolte připojení SSH:
sudo ufw allow ssh
(Pokud používáte vlastní port, spusťte sudo ufw allow <port>)
- Restartujte UFW:
sudo ufw reload
3. Číslo portu SSH se změnilo
Pokud SSH běží na jiném portu, ujistěte se, že zadáte správný port při připojování.
Řešení:
- Ověřte nakonfigurovaný port SSH:
sudo grep Port /etc/ssh/sshd_config
- Použijte správný port při připojování:
ssh -p 2222 username@server-ip
4. Nesprávná oprávnění pro SSH klíče
Nesprávná oprávnění souborů pro SSH klíče mohou způsobit selhání autentizace.
Řešení:
- Zajistěte správná oprávnění pro privátní klíč:
chmod 600 ~/.ssh/id_rsa
- Zajistěte správné nastavení souboru autorizovaných klíčů:
chmod 644 ~/.ssh/authorized_keys
5. Kontrola logů SSH
K diagnostice problémů SSH zkontrolujte logy:
sudo journalctl -u ssh --no-pager | tail -n 20
Pro monitorování logů v reálném čase:
sudo tail -f /var/log/auth.log
7. Zlepšení bezpečnosti SSH
SSH je výkonný nástroj pro vzdálený přístup, ale bez řádných bezpečnostních opatření se může stát cílem neoprávněného přístupu a útoků hrubou silou. Tato část vysvětluje doporučená nastavení pro zvýšení bezpečnosti SSH.
1. Zakázat ověřování heslem a použít ověřování veřejným klíčem
Ve výchozím nastavení SSH umožňuje ověřování heslem, což zvyšuje riziko útoků hrubou silou. Přechod na ověřování veřejným klíčem zvyšuje bezpečnost.
Kroky
- Upravit soubor
sshd_config:
sudo nano /etc/ssh/sshd_config
- Upravit (nebo přidat) následující nastavení:
PasswordAuthentication no
PubkeyAuthentication yes
- Restartovat službu SSH:
sudo systemctl restart ssh
Tím se zajistí, že SSH přijímá ověřování pouze pomocí veřejných klíčů. Nezapomeňte nastavit ověřování veřejným klíčem před aplikací této změny.
2. Změnit výchozí port SSH
Použití výchozího portu SSH (22) ho činí snadným cílem útoků. Změna portu zvyšuje bezpečnost.
Kroky
- Otevřít soubor
sshd_config:
sudo nano /etc/ssh/sshd_config
- Upravit číslo portu (např. změnit na 2222):
Port 2222
- Povolit nový port ve firewallu:
sudo ufw allow 2222/tcp
- Restartovat službu SSH:
sudo systemctl restart ssh
- Otestovat nový port:
ssh -p 2222 username@server-ip
3. Zakázat přihlášení jako root
Ve výchozím nastavení se uživatel root může přihlásit přes SSH, což představuje bezpečnostní riziko. Doporučuje se povolit připojení pouze konkrétním uživatelům.
Kroky
- Otevřít soubor
sshd_config:
sudo nano /etc/ssh/sshd_config
- Upravit následující nastavení:
PermitRootLogin no
- Restartovat službu SSH:
sudo systemctl restart ssh
4. Zabránit útokům hrubou silou pomocí Fail2Ban
Fail2Ban monitoruje pokusy o přihlášení a blokuje IP adresy po několika neúspěšných pokusech o ověření.
Instalace a konfigurace
- Nainstalovat Fail2Ban:
sudo apt install fail2ban -y
- Zkopírovat výchozí konfigurační soubor:
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
- Upravit
jail.local:
sudo nano /etc/fail2ban/jail.local
- Upravit nastavení pod
[sshd]:
[sshd]
enabled = true
maxretry = 5
bantime = 600
findtime = 600
maxretry: Maximální povolený počet pokusů o přihlášení.bantime: Doba (v sekundách), po kterou bude IP adresa blokována.findtime: Časové okno (v sekundách) pro počítání neúspěšných pokusů.
- Restartovat Fail2Ban:
sudo systemctl restart fail2ban
- Zkontrolovat stav Fail2Ban:
sudo fail2ban-client status sshd
8. Často kladené otázky (FAQ)
Tato část odpovídá na běžné otázky a problémy při používání SSH.
Q1: Proč je spojení SSH odmítnuto?
Možné příčiny:
- Služba SSH neběží → Zkontrolujte pomocí
sudo systemctl status ssh - Firewall blokuje SSH → Povolit SSH pomocí
sudo ufw allow ssh - Používáte vlastní port → Připojte se pomocí
ssh -p <port> username@server-ip
Q2: Jak změnit výchozí port SSH?
Upravit soubor sshd_config:
sudo nano /etc/ssh/sshd_config
Změnit port:
Port 2222
Poté restartovat SSH:
sudo systemctl restart ssh
Q3: Jak povolit přístup k SSH jen konkrétním IP adresám?
Upravit nastavení firewallu:
sudo ufw allow from 192.168.1.100 to any port 22
Nebo použít sshd_config:
AllowUsers username@192.168.1.100
9. Závěr
Tento průvodce pokrýval vše od základů SSH po bezpečnostní vylepšení. Zde jsou hlavní body:
- Používejte ověřování veřejným klíčem místo hesel.
- Změňte výchozí port SSH pro vyšší bezpečnost.
- Zakážete přihlášení jako root a tím zabráníte neoprávněnému přístupu.
- Používejte Fail2Ban k blokování útoků hrubou silou.
- Sledujte logy SSH pro řešení problémů.
Další zdroje
Dodržováním těchto nejlepších postupů můžete udržet bezpečné a efektivní prostředí SSH. 🚀




