Secure Shell (SSH) je šifrovací síťový protokol používaný pro šifrované spojení mezi klientem a serverem. Klient ssh vytvoří zabezpečené připojení k serveru SSH na vzdáleném počítači. Šifrované připojení lze použít k provádění příkazů na serveru, tunelování X11, přesměrování portů a dalším.
K dispozici je řada klientů SSH, bezplatných i komerčních, přičemž nejpoužívanějším klientem je OpenSSH. Je k dispozici na všech hlavních platformách, včetně Linuxu, OpenBSD, Windows a macOS.
Tento článek vysvětluje, jak používat OpenSSH klienta příkazového řádku (ssh
) pro přihlášení ke vzdálenému počítači a spouštění příkazů nebo provádění jiných operací.
Instalace klienta OpenSSH #
Klientský program OpenSSH se nazývá ssh
a lze jej vyvolat z terminálu. Klientský balíček OpenSSH také poskytuje další nástroje SSH, jako je scp
a sftp
které jsou nainstalovány spolu s ssh
příkaz.
Instalace klienta OpenSSH v systému Linux #
Klient OpenSSH je ve výchozím nastavení předinstalován na většině distribucí Linuxu. Pokud váš systém nemá nainstalovaného klienta ssh, můžete jej nainstalovat pomocí správce distribučních balíčků.
Instalace OpenSSH na Ubuntu a Debian #
sudo apt update
sudo apt install openssh-client
Instalace OpenSSH na CentOS a Fedora #
sudo dnf install openssh-clients
Instalace klienta OpenSSH na Windows 10 #
Většina uživatelů Windows používá Putty k připojení ke vzdálenému počítači přes SSH. Nejnovější verze Windows 10 však obsahují klienta a server OpenSSH. Oba balíčky lze nainstalovat přes GUI nebo PowerShell.
Chcete-li zjistit přesný název balíčku OpenSSH, zadejte následující příkaz:
Get-WindowsCapability -Online | ? Name -like 'OpenSSH*'
Příkaz by měl vrátit něco takového:
Name : OpenSSH.Client~~~~0.0.1.0
State : NotPresent
Name : OpenSSH.Server~~~~0.0.1.0
State : NotPresent
Jakmile znáte název balíčku, nainstalujte jej spuštěním:
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
Po úspěchu bude výstup vypadat nějak takto:
Path :
Online : True
RestartNeeded : False
Instalace klienta OpenSSH na macOS #
macOS se standardně dodává s nainstalovaným klientem OpenSSH.
Jak používat ssh
Příkaz #
Aby se bylo možné přihlásit ke vzdálenému počítači přes SSH, musí být splněny následující požadavky:
- Na vzdáleném počítači musí být spuštěn SSH server.
- Port SSH musí být otevřený ve firewallu vzdáleného počítače.
- Musíte znát uživatelské jméno a heslo vzdáleného účtu. Účet musí mít správná oprávnění pro vzdálené přihlášení.
Základní syntaxe ssh
příkaz je následující:
ssh [OPTIONS] [USER@]:HOST
Chcete-li použít ssh
otevřete svůj terminál nebo PowerShell a zadejte ssh
následovaný názvem vzdáleného hostitele:
ssh ssh.linuxize.com
Když se poprvé připojíte ke vzdálenému počítači přes SSH, zobrazí se zpráva jako níže.
The authenticity of host 'ssh.linuxize.com (192.168.121.111)' can't be established.
ECDSA key fingerprint is SHA256:Vybt22mVXuNuB5unE++yowF7lgA/9/2bLSiO3qmYWBY.
Are you sure you want to continue connecting (yes/no)?
Každý hostitel má jedinečný otisk prstu, který je uložen v ~/.ssh/known_hosts
soubor.
Zadejte yes
k uložení vzdáleného otisku prstu a budete vyzváni k zadání hesla.
Warning: Permanently added 'ssh.linuxize.com' (ECDSA) to the list of known hosts.
[email protected]'s password:
Jakmile zadáte heslo, budete přihlášeni ke vzdálenému počítači.
Pokud není zadáno uživatelské jméno, ssh
příkaz používá aktuální přihlašovací jméno systému.
Chcete-li se přihlásit jako jiný uživatel, zadejte uživatelské jméno a hostitele v následujícím formátu:
ssh username@hostname
Uživatelské jméno lze také zadat pomocí -l
možnost:
ssh -l username hostname
Ve výchozím nastavení, když není zadán žádný port, se klient SSH pokusí připojit ke vzdálenému serveru na portu 22. Na některých serverech správci mění výchozí port SSH, aby přidali další vrstvu zabezpečení serveru snížením rizika automatizovaného útoky.
Chcete-li se připojit na jiný než výchozí port, použijte -p
možnost zadat port:
ssh -p 5522 username@hostname
Pokud máte problémy s ověřováním nebo připojením, použijte -v
možnost sdělit ssh
pro tisk ladicích zpráv:
ssh -v username@hostname
Chcete-li zvýšit úroveň výřečnosti, použijte -vv
nebo -vvv
.
ssh
příkaz přijímá řadu možností.
Úplný seznam všech možností naleznete v ssh
manuálovou stránku zadáním man ssh
ve vašem terminálu.
Konfigurační soubor SSH #
Pokud se denně připojujete k více vzdáleným systémům přes SSH, zjistíte, že zapamatovat si všechny vzdálené IP adresy, různá uživatelská jména, nestandardní porty a různé možnosti příkazového řádku je obtížné, ne-li nemožné.
Klient OpenSSH čte možnosti nastavené v konfiguračním souboru pro jednotlivé uživatele (~/.ssh/config
). V tomto souboru můžete uložit různé možnosti SSH pro každý vzdálený počítač, ke kterému se připojujete.
Ukázková konfigurace SSH je uvedena níže:
Host dev
HostName dev.linuxize.com
User mike
Port 4422
Když vyvoláte ssh klienta zadáním ssh dev
, příkaz přečte ~/.ssh/config
a použijte podrobnosti připojení určené pro hostitele dev. V tomto příkladu ssh dev
je ekvivalentní následujícímu:
ssh -p 4422 [email protected]
Další informace naleznete v článku o konfiguračním souboru SSH.
Ověření pomocí veřejného klíče #
Protokol SSH podporuje různé mechanismy ověřování.
Mechanismus ověřování na základě veřejného klíče vám umožňuje přihlásit se ke vzdálenému serveru, aniž byste museli zadávat heslo.
Tato metoda funguje tak, že se vygeneruje dvojice kryptografických klíčů, které se používají k autentizaci. Soukromý klíč je uložen na klientském zařízení a veřejný klíč je přenesen na každý vzdálený server, ke kterému se chcete přihlásit. Vzdálený server musí být nakonfigurován tak, aby přijímal ověřování pomocí klíče.
Pokud na místním počítači ještě nemáte pár klíčů SSH, můžete si jej vygenerovat zadáním:
ssh-keygen -t rsa -b 4096 -C "[email protected]"
Budete požádáni o zadání bezpečné přístupové fráze. Jestli chcete použít přístupovou frázi, je to na vás.
Jakmile budete mít svůj pár klíčů, zkopírujte veřejný klíč na vzdálený server:
ssh-copy-id username@hostname
Zadejte heslo vzdáleného uživatele a veřejný klíč bude připojen ke vzdálenému uživateli authorized_keys
soubor.
Jakmile je klíč nahrán, můžete se přihlásit ke vzdálenému serveru, aniž byste byli vyzváni k zadání hesla.
Nastavením autentizace na základě klíče můžete zjednodušit proces přihlášení a zvýšit celkovou bezpečnost serveru.
Přesměrování portu #
Tunelování SSH nebo předávání portů SSH je metoda vytvoření šifrovaného spojení SSH mezi klientem a serverem, přes které lze přenášet porty služeb.
Předávání SSH je užitečné pro přenos síťových dat služeb, které používají nešifrovaný protokol, jako je VNC nebo FTP, pro přístup k geograficky omezenému obsahu nebo pro obcházení přechodných firewallů. V podstatě můžete přesměrovat jakýkoli TCP port a tunelovat provoz přes zabezpečené připojení SSH.
Existují tři typy přesměrování portů SSH:
Přesměrování místního portu #
Lokální přesměrování portů vám umožňuje přesměrovat připojení z klientského hostitele k hostiteli serveru SSH a poté k cílovému hostitelskému portu.
Chcete-li vytvořit místní přesměrování portů, předejte -L
možnost ssh
klient:
ssh -L [LOCAL_IP:]LOCAL_PORT:DESTINATION_HOST:DESTINATION_PORT -N -f username@hostname
Volba -f říká ssh
příkaz pro spuštění na pozadí a -N
neprovádět vzdálený příkaz.
Vzdálené přesměrování portů #
Vzdálené předávání portů je opakem místního předávání portů. Přesměruje port z hostitele serveru na hostitele klienta a poté na port cílového hostitele.
-R
volba říká ssh
pro vytvoření vzdáleného přesměrování portů:
ssh -R [REMOTE:]REMOTE_PORT:DESTINATION:DESTINATION_PORT -N -f username@hostname
Dynamické přesměrování portů #
Dynamické předávání portů vytváří proxy server SOCKS, který umožňuje komunikaci přes řadu portů.
Chcete-li vytvořit dynamické přesměrování portů (SOCKS), předejte -D
možnost pro klienta ssh:
ssh -D [LOCAL_IP:]LOCAL_PORT -N -f username@hostname
Podrobnější informace a podrobné pokyny najdete v článku Jak nastavit SSH Tunneling (Přesměrování portů).
Závěr č.
Chcete-li se připojit ke vzdálenému serveru přes SSH, použijte ssh
příkaz následovaný vzdáleným uživatelským jménem a názvem hostitele (ssh username@hostname
).
Vědět, jak používat ssh
je nezbytný pro správu vzdálených serverů.
Pokud máte nějaké dotazy, zanechte prosím níže komentář.