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