Sempre parlando di SSH, un'altra situazione che può tornare
utile nel caso il computer da amministrare o gestire si
trovi dietro un router che non siete in grado di gestire è
il c.d. "reverse tunneling".
In pratica, si può dire alla macchina remota di "chiamarvi"
su una determinata porta (quella in cui avete attivo il
servizio SSH) e di indirizzare tutti i servizi all'host
remoto (la macchina che fa assistenza nella fattispecie).
Supponiamo di essere in un caso di questo genere:
Macchina A (macchina che deve
controllare):
ip esterno: 82.5.23.135
ip interno:192.168.1.33
Servizio SSH attivo sulla porta 2222
Creato un account fittizio sulla macchina controllante
attraverso il quale la macchina controllata potrà accedere.
Per comodità a questo account daremo uno username pippo ed
una pass plutopippopaperino
Macchina B (macchina remota che chiede
assistenza)
si trova dietro un router e chi è dalla parte opposta non
ha la minima idea di cosa sia un indirizzo ip)
server VNC attivo e funzionante sulla porta 5900
server SSH attivo e funzionante sulla porta 22 (per
entrambi i servizi non si può accedere direttamente
dall'esterno in quanto sono bloccati da un firewall o
router che non è possibile controllare)
il cliente chiede assistenza via VNC
In un mondo perfetto funzionerebbe così:
chi si trova dietro la macchina B lancia il server VNC e lo
attiva sulla porta di default 5900. Poi lancia una shell da
terminale e comincia a scrivere il seguente comando:
ssh -p 2222 -R 5911:localhost:5900 -N -l pippo 82.5.23.135
Per contro, che si trova dietro la macchina A, per poter
amministrare via VNC la macchina B, scriverà sul proprio
viewer semplicemente
localhost:5911
Certamente la soluzione proposta non è fra le più semplici
e facilmente attuabili e presenta comunque dei grossi
limiti, dovuti principalmente a due fattori:
1. un fattore umano: chi è dall'altra parte del mondo e si
trova dietro al computer B non è detto che abbia
dimestichezza con il terminale.
2. un fattore tecnico: per fare in modo che il computer B
sia pronto per l'assistenza bisogna prepararlo all'uopo: si
deve settare VNC, si deve settare il servizio SSH sul
computer A, si deve infine istruire chi è dietro il
computer B in merito al come ed al cosa fare in caso di
assistenza.
A questo punto...quale soluzione?
Le soluzioni che si prospettano sono diverse e riguardano
soprattutto l'automazione dei vari processi. La prima idea
che mi viene in mente è quella di salvare il comando
descritto sopra in un file .term (ad esempio
assistenza.term ) in modo tale che chi si trova dietro il
computer B dovrà semplicemente fare doppio click sul file
assistenza.term e inserire le credenziali..i vari server
VNC ed SSh possono girare come processi in background