Sebbene abbia già parlato di reverse VNC nei tutorial precedenti, questa volta vorrei parlare in maniera un po' più approfondita di ciò che tecnicamente si chiama Reverse VNC o VNC Reverse o VNC Listen Mode ecc.
Come accenato in precedenza, si tratta di una tecnica di VNC al contrario.
Anzichè essere il Server in ascolto sulla porta 5900, è proprio questi che chiama il client in ascolto sulla porta 5500.
I motivi principali che dettano l'uso di un reverse VNC sono principalmente questi:
1. sicurezza: non si è costretti a tenere attivo un servizio
2. riservatezza: non si devono impostare password e non si devono bucare gli altrui router e soprattutto chi riceve assistenza sa che la sua macchina viene visualizzata solamente quando è lui a richiedere il servizio
3. comodità: non si deve chiedere all'assistito di impostare ilrouter/firewall o di mettere mano alle impostazioni della lan, non occorre impostare sulle altrui macchine servizi terzi per reperire l'IP
4. necessità: derivante soprattutto dal fatto che non sempre è possibile metter mano ad un router/firewall (caso Fastweb)

In questo minitutorial mi limiterò al reverse VNC "da Mac a Mac" (un giorno, appena il tempo lo permetterà, vedrò di ampliare il discorso "da altre piattaforme a Mac")

Lato client: innanzitutto serve un client che supporti il "listening mode" (il più famoso per Mac OSX è Chicken of the VNC) ed un IP raggiungibile (o IP statico oppure si attiva un servizio tipo dyndns, in questo caso sul computer che offre assistenza). Questo significa che chi vuole offrire assistenza in questa maniera e si trova all'interno di una LAN, dovrà preoccuparsi di usare degli IP interni statici e di fare il port forwarding sulla porta 5500 dal router alla sua macchina

Lato server: in questo caso serve solamente un server che sia in grado di chiamare un client in ascolto su una determinata porta (di default la 5500). Vine VNC Server funge perfettamente allo scopo.
Basta dire all'assistito di lanciare il server

screenshot_03

e di scrivere nell'apposita casella "Connetti all'Host" l'IP della macchina che offre assistenza oppure il suo nome host e poi fare click su Add.
Può sembrare assurdo, ma questa è proprio la parte più difficile di tutto il discorso. La ragione è presto spiegata ed è principalmente una ragione di tipo psicologico. Infatti, chi chiama per ricevere assistenza, è già agitato di suo in quanto non gli funziona il suo programma per mandare avanti l'azienda oppure il suo programma di posta e si trova nella completa incapacità di poter lavorare e, nella frenesia, si trova anche nella situazione di non poter ragionare (il panico fa bruttissimi scherzi). Infatti, con questo sistema si deve spiegare, solitamente per telefono, che si deve scrivere in nome che stai dettando nell'apposito campo (risposta tipo "non c'è, non la vedo, non lo trovo..."
Si, al lato pratico trovare questa casellina non è sempre così semplice e scontato agli occhi di chi deve ricevere aiuto

screenshot_04

Senza contare poi le difficoltà del dover dettare l'ip o in nome host per telefono.

Un altro simpatico programmino pensato all'uopo (ma solo parzialmente gratuito) è Schnitz Remote. Questi infatti, nella versione Lite non permette di configurare a priori l'ip o il nome host e di conseguenza, si è costretti a chi si offre assistenza a dettare faticosamente ed affannosamente l'IP o il nome host

screenshot_05

Di vantaggioso, Schnitz Remote Lite offre il fatto che i campi sono solo due e di conseguenza è già più agevole da poter compilare anche per chi fosse in preda al panico :)

A questo punto, una soluzione rudimentale ma efficace, potrebbe essere data da un file .term che, una volta aperto, permetta in un sol colpo di: lanciare il server VNC e collegarsi direttamente all'host desiderato. Vediamo come:

Innanzitutto lanciamo il nostro oramai indispensabile terminale, solitamente ubicato in /Applicazioni/Utility/


screenshot_06

Si va su Documento>Registra col nome


screenshot_07

A questo punto l'idea è la seguente:

inserire in una cartella VNC il contenuto sia del file che chiameremo assistenza.term che del server VNC stesso

Nella casella "Esegui questo comando" scriveremo

~/Desktop/VNC/"Vine Server.app"/OSXvnc-server -connectHost nomehost.del.computer.cheassiste -connectPort 5500

e daremo al file creato il nome di assistenza.term salvandolo nella cartella ~/Desktop/VNC/

screenshot_09

A questo punto, basterà zippare la cartella VNC e renderla disponibile su un server FTP oppure su un server web (volendo si può anche mandare per posta elettronica) e si chiede all'assistito di salvarla sul proprio desktop (solitamente la directory di default per i download), di scompattarla (quindi fare doppio click), di aprirla (ovvero di fare doppio click sull'icona della cartella VNC) e di fare infine doppio click sull'icona di assistenza.term

Il risultato sarà, dalla parte di chi riceve assistenza (grazie Sandrone :D ) una shell di terminale che si aprirà, dalla parte di chi assiste, una volta lanciato il client in ascolto, lo schermo remoto della macchina da assistere



screenshot_01

Ecco una macchina da 12" con tiger come vedrebbe una macchina da 17" con Leopard (inutile dirlo...su CotVnc manca lo screen resizing!!)

Chiaramente poi si possono aggiungere tutti quei bei comandi utili a settare un server VNC.
La lista completa dei comandi la si trova (qualora il Server VNC dovesse essere dentro la cartella Applications) lanciando il terminale e scrivendo

/Applications/"Vine Server.app"/OSXvnc-server -help

Ecco da terminale cosa compare:

IKEE:~ ikee$ /Applications/"Vine Server.app"/OSXvnc-server -help
2008-03-09 16:22:51.086 OSXvnc-server[368] Main Bundle: /Applications/Vine Server.app
2008-03-09 16:22:51.107 OSXvnc-server[368] Loading Bundle /Applications/Vine Server.app/Contents/Resources/JaguarBundle.bundle

Available options:

-rfbport port TCP port for RFB protocol (0=autodetect first open port 5900-5909)
-rfbwait time Maximum time in ms to wait for RFB client
-rfbauth passwd-file Use this password file for RFB protocol
(use 'storepasswd' to create a password file)
-deferupdate time Time in ms to defer updates (default 40)
-desktop name VNC desktop name (default "MacOS X")
-alwaysshared Always treat new clients as shared
-nevershared Never treat new clients as shared
-dontdisconnect Don't disconnect existing clients when a new non-shared
connection comes in (refuse new connection instead)
-nodimming Never allow the display to dim
(default: display can dim, input undims)
-maxdepth bits Maximum allowed bit depth for connecting clients.
(default: bit depth of display)
-allowsleep Allow machine to sleep
(default: sleep is disabled)
-disableScreenSaver Disable screen saver while users are connected
(default: no, allow screen saver to engage)
-swapButtons Swap mouse buttons 2 & 3
(default: YES)
-dontswapButtons Disable swap mouse buttons 2 & 3
(default: NO)
-disableRemoteEvents Ignore remote keyboard, pointer, and clipboard event
(default: no, process them)
-disableRichClipboards Don't share rich clipboard events
(default: no, process them)
-connectHost host Host Name or IP of listening client to establishing a reverse conneect
-connectPort port TCP port of listening client to establishing a reverse conneect
(default: 5500)
-noupdates Prevent registering for screen updates, for use with x2vnc or win2vnc
-protocol protocol Force a particular protocol version (eg 3.3)
(default:RFB 003.008
)-bigEndian Force Big-Endian mode (PPC)
(default: detect)
-littleEndian Force Little-Endian mode (INTEL)
(default: detect)
-localhost Only allow connections from the same machine, literally localhost (127.0.0.1)
If you use SSH and want to stop non-SSH connections from any other hosts
(default: no, allow remote connections)
-restartonuserswitch flag For Use on Panther 10.3 systems, this will cause the server to restart when a fast user switch occurs (default: no)

JAGUAR BUNDLE OPTIONS (10.2+):
-keyboardLoading flag This BETA feature allows OSXvnc to look at the users selected keyboard and map keystrokes using it.
Disabling this returns OSXvnc to standard (U.S. Keyboard) which may work better with Dead Keys.
(default: no), 10.2+ ONLY
-pressModsForKeys flag If OSXvnc finds the key you want it will temporarily toggle the modifier keys to produce it.
This flag works well if you have different keyboards on the local and remote machines.
Only works if -keyboardLoading is on
(default: no), 10.2+ ONLY
-rendezvous flag Allow OSXvnc to advertise VNC server using Rendezvous discovery services.
'VNC' will enable the service named VNC (For Eggplant & Chicken 2.02b)
'Both' or '2' will enable the services named RFB and VNC
(default: RFB:YES VNC:NO), 10.2+ ONLY
-ipv4 Listen For Connections on IPv4 ONLY (Default: Off). 10.2+ ONLY
-ipv6 Listen For Connections on IPv6 ONLY (Default: Off). 10.2+ ONLY

IKEE:~ ikee$

Buon reverse VNC :D