OpenSSH

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

Start klienta - jak se připojit

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:

ssh-keygen
ssh-copy-id uzivatel@ipadresavzdalenehoPC

V nastavení serveru musí být parametry:

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í:

ssh -f -N -L lokalniport:ipkamtunelovat:vzdalenyport -p 22 sshuser@sshstroj

Přesměrování X Serveru přes SSH (i do Windows)

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

Linux klient

Windows klient

Připojení a start programů v Unixu/Linuxu

  1. Na linuxovém anebo unixovém serverovém stroji běží SSH server s přesměrováním X11.
  2. Na klientské linuxové stanici musí být spuštěn X Server.
  3. Klient se připojí pomocí příkazu ssh -X uzivatel@ip.
  4. 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

  1. Na linuxovém anebo unixovém serverovém stroji běží SSH server s přesměrováním X11.
  2. Na stanici Windows je spuštěný XMing s nasloucháním displeje 0.0.
  3. 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.
  4. 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.
PuTTY a X11 forwarding

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.

Windows - instalace OpenSSH serveru

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

Instalace serverového balíčku:

Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0

Odstranění z PowerShellu:

Remove-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0

Inicializace nastavení:

  1. Start služby:
  2. Start-Service sshd
  3. Nastavení spouštění služby:
  4. Set-Service -Name sshd -StartupType 'Automatic'
  5. Firewall:
  6. Get-NetFirewallRule -Name *ssh*
    New-NetFirewallRule -Name sshd -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22

Klient na Windows

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
Windows - nápověda příkazu 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
Windows - připojení pomocí ssh

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
Připojení

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.

Fingerprint

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….

Nastavení

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.

Tunelování v PuTTY

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.

Nastavení okna

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.

Puttygen

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.

Generování 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.

Nastavení klíče pro ověření

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.

Vložení do agenta

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

Algoritmy