Klient a server pro vzdálené zabezpečené přihlášení a přenos souborů v
systémech Linux/Unix (i Windows – ale to až jindy). SSH nebo někdy také
OpenSSH je protokol a nástroj sloužící k zabezpečenému připojení počítačů
propojených v síti. Díky SSH se můžete šifrovaně spojit s jiným počítačem
a ovládat ho. Dokáže také přesměrovat X a zvládá IP adresy V6. Spojení
se dá komprimovat pro dosažení rychlejšího přenosu na pomalých připojeních.
Start serveru na Linuxu
Pro SSH server v systémech Linux/Unix je nutné mít
zainstalovaný balíček openssh a spuštěnou službu sshd.
Výchozí nastavení serveru je pro otestování dostačující.
Konfigurace serveru se nachází v /etc/ssh/sshd_config.
V modernější distribuci spustíme službu pomocí systemctl:
systemctl enable sshd
systemctl start sshd
V systému FreeBSD se pro zapínání SSH démona zapíše do
konfiguračního souboru /etc/rc.conf řádek sshd_enable=“YES“.
Konfigurační soubory jsou stejné v /etc/ssh/sshd_config.
Parametry nastavení serveru
AllowTcpForwarding yes povolí směrování portů
ChallengeResponseAuthentication yes výměna informací o autentikaci
ForwardX11 no vypne přesměrování X Serveru
GatewayPorts yes pro přesměrování portů do brány
LogLevel VERBOSE upovídaný log
LoginGraceTime 2m doba pro opakování přihlášení
MaxAuthTries 6 maximální počet pokusů přihlášení
MaxSessions 10 maximální počet připojení
PasswordAuthentication no vypne přihlašování heslem (musí se zapnout klíč)
Vycházíme, že je dostupný nějaký SSH server. Připojení ke vzdálenému
počítači provedeme příkazem ssh a poté následuje jméno uživatele,
zavináč a IP adresa vzdáleného počítače. Běžně není nezbytné zadávat
uživatele, protože na to budeme dotázáni.
ssh uzivatel@ipadresavzdalenehoPC
Více specifické připojení s definicí použitého klíče a vlastního portu 222 pro připojení:
ssh -i ~/.ssh/klic.key root@192.168.1.35 -p 222
Přihlášení klíčem a jeho generování
Pokud se chceme přihlašovat ke vzdálenému počítači pomocí klíče,
musíme si jej vygenerovat na lokálním počítači příkazem ssh-keygen.
Při tvorbě klíče zadáme ještě heslo, abychom zvýšili svou bezpečnost.
Jestliže při vytváření klíče heslo nezadáme a necháme jej prázdné,
budeme se přihlašovat bez hesla. Pokud jsme vygenerovali klíč, musíme
ho nahrát do vzdáleného počítače příkazem ssh-copy-id a opět následuje
jméno uživatele, zavináč a IP adresa vzdáleného počítače.
Z lokálního zařízení můžeme sérií příkazů vygenerovat a nahrát klíč na server:
PasswordAuthentication no - Vypne přihlašování heslem
Ověření fingerprintu:
ssh-keygen -l -f /etc/ssh/ssh_host_ed25519_key
Vložení existujícího klíče na server
V adresáři uživatele serveru, na kterého se budeme připojovat pomocí SSH,
vytvoříme adresář .ssh, jestliže ještě vytvořen není, obsahující soubor s klíčem.
Vytvořím složku .ssh:
mkdir .ssh
Přidělím složce absolutní práva pouze vlastníkovi:
chmod 700 .ssh
Vytvořím soubor obsahující klíč a vložím do něj na jeden řádek klíč:
nano .ssh/authorized_keys
Udělím práva vlastníkovi klíče:
chmod 600 .ssh/authorized_keys
Tunelování
Funguje skvěle, po níže uvedeném příkazu se vytvoří tunel ze vzdáleného stroje na lokální:
Přes protokol SSH můžeme na svém windowsovém stroji s drobnou úpravou
konfigurace SSH serveru spouštět vzdáleně i programy, které vyžadují GUI.
Tyto programy pak spustíme na vzdáleném stroji a chovají se tak, jako bychom je spustili přímo na serverovém PC.
Jestliže je klient i server linuxový stroj, je to ideální varianta pro
vzdálený start programů ze serveru protokolem SSH. Je možné vzdáleně
spouštět i celé pracovní prostředí včetně plochy.
Navázání SSH spojení s přesměrováním X11 a spuštění příkazu firefox:
ssh -XY uzivatel@192.168.1.20 firefox
Unix (Linux) server
Běžící server SSH
V konfiguračním souboru serveru sshd_config musí být parametr X11Forwarding yes.
Na PC musí být nainstalován xauth.
Na serverovém PC musí být nainstalované grafické prostředí a programy, které chceme spouštět.
Linux klient
Nainstalovaný klient SSH (openssh)
Nainstalovaný a spuštěný X Server s grafickým prostředím
Windows klient
Nainstalovaný klient SSH například PuTTY
Nainstalovaný program XMing, který je vlastně X Server pro Windows
Spuštěný program XMing s nasloucháním displeje 0.0
Připojení a start programů v Unixu/Linuxu
Na linuxovém anebo unixovém serverovém stroji běží SSH server s přesměrováním X11.
Na klientské linuxové stanici musí být spuštěn X Server.
Klient se připojí pomocí příkazu ssh -X uzivatel@ip.
Pro vzdálený start programů stačí psát příkazy a programy se budou otevírat v novém okně.
Připojení a start programů ve Windows
Na linuxovém anebo unixovém serverovém stroji běží SSH server s přesměrováním X11.
Na stanici Windows je spuštěný XMing s nasloucháním displeje 0.0.
Ve Windows klientovi (PuTTY) se připojíme k SSH serveru a v nastavení
spojení SSH musí být povoleno přesměrování (Enable X11 forwarding) viz. obrázek.
Po spuštění libovolného programu vyžadující X Server se program spustí
v okně našich Windows. Naslouchající program XMing pak převezme úlohu a spustí okno programu.
OpenSSH server na Windows
Server je počítač, který naslouchá a poskytuje zdroj SSH služby. Pro úspěšné
přihlášení například z linuxového anebo jiného PC, musíme vytvořit uživatele pro
vzdálené přihlášení a určit mu práva.
Systém Windows 10 nabízí jako volitelnou součást k nainstalování
OpenSSH server, který najdeme v nástroji Nastavení systému - Aplikace - Volitelné součásti - Přidat součást - Server OpenSSH.
Při instalaci z PowerShellu se nainstaluje server, vytvoří se služba a
klíče, ale pozor jako který uživatel akci spustíme. Po této instalaci je k
dispozici funkční a běžící služba se standardním nastavením.
Get-WindowsCapability -Online | ? Name -like 'OpenSSH*'
Výstup příkazu bude:
Name : OpenSSH.Client~~~~0.0.1.0
State : NotPresent
Name : OpenSSH.Server~~~~0.0.1.0
State : NotPresent
Je počítač, který se připojuje k serveru. Na klientovi neběží žádné služby,
pouze se spustí klientský program pro připojení.
Základní nápovědu používání příkazu ssh získáme příkazem:
ssh
Jestliže se chceme připojit jako root například na adresu 124.24.142.130,
kde je linuxový server, bude vypadat příkaz následovně:
ssh root@124.24.142.130
Připojení z Windows díky PuTTY
Z operačího systému Windows se lze bez problémů připojit na jakýkoli
SSH server, který je dostupný v síti anebo přes internet. To vše umožní
klasický program PuTTY, který je volně ke stažení.
Pro připojení stačí znát opět uživatele a adresu počítače.
uzivatel@192.168.40.125
Po úspěšném navázání spojení budu dotázán na přijmutí host key nebo-li klíče hosta.
Stačí potvrdit volbou Ano a jsem přihlášený do vzdáleného počítače.
Tunelování v PuTTY
Tunelování umožní připojení k jinak nedostupným sítím, které jsou za routerem,
firewallem anebo jiným způsobem oddělených.
Pro nastavení takového tunelu stačí u aktivního připojení vyvolat nabídku
okna a vybrat Change settings….
Nastavíme Source port, který bude představovat port na lokálním
počítači pro tunel (825). Parametr Destination obsahuje adresu a
port na serveru SSH, který bude tunelován. Pro jednoduchý příklad
můžeme jako destinaci zadat localhost:80. Pro aplikaci přidáme pravidlo
tlačítkem Add a aplikujeme pomocí Apply. Tunel okamžitě funguje na stávajícím
připojení.
Výsledek je, že na vzdáleném počítači bude tunel z portu 80 na lokální
počítač a port 8025.
Název okna PuTTY
Okna s SSH spojením si můžeme jednoduše pojmenovat vyvoláním nabídky chování
okna do kolonky Window tittle můžeme zapsat cokoli.
Vytváření klíčů v PuTTY
Pro vytvoření soukromého a veřejného klíče poslouží nástroj PuTTY Key
Generator, který je součástí instalace PuTTY. Po spuštění nástroje můžeme
klíče buď importovat, zkonvertovat anebo vygenerovat. V tomto případě si
klíč vygenerujeme.
Generovat můžeme různé typy klíčů, zde budeme pracovat s SSH-2 RSA.
Jestliže zvolíme vygenerování hesla tlačítkem Generate, musíme kroužit
myší pro generování náhodných hodnot klíče.
Vygenerovaný obsah klíče můžeme zkopírovat a vložit do souboru Authorized_keys,
který je na serveru. Tento otisk klíče slouží jako ověření soukromého klíče, který
zůstává pouze u klienta. Soukromý klíč si dobře uložíme, bude sloužit pro připojování
klientů. Pro jednorázové spojení klíčem vybereme v nastavení spojení PuTTY cestu ke klíči.
V případě častého využívání klíče jej můžeme vložit do nástroje Pageant, který
je správcem klíčů a rovněž je součástí instalace PuTTY. V tomto případě bude klíč
dostupný vždy, když bude spuštěn nástroj Pageant.
Chyba: expected key exchange group packet from server
Tato chyba nastane v případě, že se používá špatný algoritmus zabezpečení, v
mém případě to byl algoritmus Diffie-Hellman group exchange. Tento algoritmus bylo
potřeba posunout v úrovni důležitosti dolů a tím se zprovoznilo spojení.
Upravit prioritu algoritmů lze v nastavení sezení spojení: SSH -> Kex