Využití SSH v Ubuntu! Kompletní průvodce připojením, změnou portu a autentizací pomocí veřejného klíče

目次

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

  1. Upravit soubor sshd_config:
sudo nano /etc/ssh/sshd_config
  1. Upravit (nebo přidat) následující nastavení:
PasswordAuthentication no
PubkeyAuthentication yes
  1. 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

  1. Otevřít soubor sshd_config:
sudo nano /etc/ssh/sshd_config
  1. Upravit číslo portu (např. změnit na 2222):
Port 2222
  1. Povolit nový port ve firewallu:
sudo ufw allow 2222/tcp
  1. Restartovat službu SSH:
sudo systemctl restart ssh
  1. 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

  1. Otevřít soubor sshd_config:
sudo nano /etc/ssh/sshd_config
  1. Upravit následující nastavení:
PermitRootLogin no
  1. 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

  1. Nainstalovat Fail2Ban:
sudo apt install fail2ban -y
  1. Zkopírovat výchozí konfigurační soubor:
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
  1. Upravit jail.local :
sudo nano /etc/fail2ban/jail.local
  1. 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ů.
  1. Restartovat Fail2Ban:
sudo systemctl restart fail2ban
  1. 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. 🚀

侍エンジニア塾