GNU/Linux >> Linux Esercitazione >  >> Linux

Come mantenere aperto un tunnel SSH in modo affidabile?

Sembra che tu abbia bisogno di autossh. Questo monitorerà un tunnel ssh e lo riavvierà se necessario. Lo usiamo da un paio d'anni e sembra funzionare bene.

autossh -M 20000 -f -N your_public_server -R 1234:localhost:22 -C

Maggiori dettagli sul parametro -M qui


Tutti i firewall con stato dimenticano una connessione dopo non aver visto un pacchetto per quella connessione per un po' di tempo (per evitare che le tabelle di stato si riempiano di connessioni in cui entrambe le estremità sono morte senza chiudere la connessione). La maggior parte delle implementazioni TCP invierà un pacchetto keepalive dopo molto tempo senza sentire dall'altra parte (2 ore è un valore comune). Se, tuttavia, è presente un firewall stateful che dimentica la connessione prima che i pacchetti keepalive possano essere inviati, una connessione longeva ma inattiva cesserà.

In tal caso, la soluzione è impedire che la connessione diventi inattiva. OpenSSH ha un'opzione chiamata ServerAliveInterval che può essere utilizzata per impedire che la connessione rimanga inattiva per troppo tempo (come bonus, rileverà prima quando il peer è morto anche se la connessione è inattiva).


Ho usato il seguente script Bash per continuare a generare nuovi tunnel ssh quando il precedente muore. Usare uno script è utile quando non vuoi o non puoi installare pacchetti aggiuntivi o usare il compilatore.

while true
do
  ssh <ssh_options> [[email protected]]hostname
  sleep 15
done

Nota che questo richiede un file di chiavi per stabilire automaticamente la connessione, ma questo è anche il caso di autossh.


Linux
  1. Come aumentare il timeout della connessione SSH

  2. Come controllare la velocità della tua connessione ssh

  3. Come terminare la connessione SSH che non risponde in Linux?

  4. Come posso incanalare tutto il mio traffico di rete attraverso SSH?

  5. Come eseguire il tunneling HTTP su SSH tramite SOCKS?

Ssh:come funziona il tunneling Ssh inverso?

Come mantenere le sessioni SSH remote in esecuzione dopo la disconnessione

Come posso disconnettermi da una sessione SSH remota aperta?

Come si esce da una connessione SSH?

Come impedire a SSH di disconnettersi se è rimasto inattivo per un po'

Connessione SSH tramite un tunnel SSH inverso (remoto).