Skip to content

Persistentní SSH tunel pomocí AutoSSH

Jedna rychlovka pro případ, že potřebujete zabezpečený tunel pro svá data s automatickým nahozením v případě výpadku 🙂 

Nedávno jsem potřeboval vyřešit situaci, kdy bylo potřeba zabezpečit data mezi klientem a serverem a k tomu se ještě zbavit výpadků spojení. To první bylo v plánu řešit pomocí ssl certifikátu nicméně poté se objevily ještě výpadky spojení v rámci virtualizační platformy. V rámci nejrychlejšího řešení se ukázalo jako nejvhodnější východisko použití ssh tunelu. Odpadla tak konfigurace ssl a zároveň se vyřešil problém s připojením klientů na server. Rozebírat důvody problémů s připojením dnes nebudu, bylo by to minimálně na jeden další blog, ale ukážu zde použití ssh tunelu, což se může hodit v mnoha různých situacích.

AutoSSH je v podstatě wrapper nad klasickým ssh klientem. Pomocí triviální konfigurace je možno nahodit ssh tunel s určenými porty a přenášet tak bezpečně data. V případě AutoSSH je zde ještě benefit v tom, že wrapper automaticky nahodí spadlé spojení. AutoSSH v debianu nainstalujete jednoduše jako autossh balík. Vzhledem k tomu, že AutoSSH v podstatě spouští klasického ssh klienta, je ideální využít ~/.ssh/config soubor pro nastavení spojení se serverem – nadefinovat usera, klíč, hostname apod., pak se ještě zjednoduší konfigurační soubor samotného AutoSSH.

 

Ukázkový AutoSSH konfigurační soubor (chmod +x autossh.host):

#!/bin/sh
#
ID=remoteuser
HOST=remoteserver
AUTOSSH_GATETIME=0
export AUTOSSH_POLL AUTOSSH_LOGFILE AUTOSSH_DEBUG AUTOSSH_PATH AUTOSSH_GATETIME AUTOSSH_PORT
autossh -2 -N -M 0 -L 22022:localhost:22022 ${ID}@${HOST}

Důležitá je volba AUTOSSH_GATETIME=0. Je jí potřeba použít, pokud spouštíme wrapper při bootu systému. V čase spuštění ASSH ještě nemusí být dostupná síť a pokud by zde tato volba nebyla a ASSH by se při startu nepovedlo navázat spojení, ukončí se bez toho, aby se o připojení znovu pokoušel.

 

Systemd service soubor pro spuštění při bootu (autossh.service):

[Unit]
Description=SSH tunel

[Service]
Type=oneshot
ExecStart=/root/autossh.host

[Install]
WantedBy=multi-user.target

Soubor nahrajeme do /etc/systemd/system a aktivujeme pomocí systemctl enable autossh

 

Takto máme zařízen přístup na port 22022 přes localhost 🙂

Tunelům a šifrování zdar 🙂

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *

Time limit is exhausted. Please reload the CAPTCHA.