Il blog è stato spostato! Redirecting...

Stai per essere spostato sul nuovo indirizzo. Se non funziona vai su http://www.lejubila.net e aggiorna il tuo bookmark.

Visualizzazione post con etichetta tr. Mostra tutti i post
Visualizzazione post con etichetta tr. Mostra tutti i post

7.7.08

Connessione ssh verso un host dietro nat

Supponiamo di aver un host A con un indirizzo pubblico e un host B su una lan dietro Nat, a questo punto vogliamo raggiungere dall'host A l'host B tramite ssh ma non possiamo mettere mano al gateway che Natta B.
Una possibile soluzione è fare aprire a B un tunnel ssh su A tramite il quale poi ci collegheremo

open_tunnel_ssh.sh

#!/bin/bash
PORTAAPERTA=`ps u -N -C grep |grep "ssh -N -R 3333" | tr -s ' ' | cut -d ' ' -f 11 | wc -l`

if [ "$PORTAAPERTA" == "0" ]; then
ssh -N -R 3333:localhost:22 user@host_A.com -f
fi

questo script può essere inserito nel crontab di B in modo che venga eseguito ogni cinque minuti. Se il tunnel è già aperto la connessione ssh non verrà rieseguita altrimenti verra aperta la porta 3333 sull'host A che punterà alla porta 22 (ssh) dell'host B

A questo punto dall'host A possiamo impartire il comando

ssh -p 3333 localhost

e avremo accesso a l'host B

nell'eventualità che il tunnel cada questo verrà ripristinato dopo cinque minuti grazie al crontab.

Per fare funzionare il tutto è fondamentale che la connessione ssh da B verso A funzioni senza dovere impartire la password ma grazie alla chiave pubblica di B precedentemente generata
ssh-keygen -t dsa
e salvata in
~/.ssh/authorized_keys
di A