VNC, MacOS X e l’amministrazione remota
OSXvnc, vnc, sshAbout VNC...:
VNC è composto da due parti. VNC-server e VNC-viewer (client).
Molto semplicemente, la parte server cattura la scrivania di un computer come una serie di immagini… queste vengono trasmesse alla parte client ricomponendole in successione.
Ci sono almeno due notissimi concorrenti (commerciali) di VNC:
- L’Apple Remote Desktop della Apple e
- Timbuktu Pro di Netopia
Entrambi dotati di un’interfaccia forse più amchevole ma sicuramente… a pagamento (e non è detto che funzionino meglio)! Inoltre potremmo scoprire che il VNC ha tutte le caratteristiche per definirsi uno strumento valido anche negli ambiti professionali.
Tra i pregi di VNC possiamo elencare almeno questi:
- è multi-piattaforma (Mac, PC, Linux, Solaris, DEC Alpha, Windows CE, Palm, MIPS, Java...)
- è OpenSource distribuito sotto licenza GNU
- è piccolo e semplice. Sotto MacOS X il server pesa 400K e il client solo 300K.
- permette accessi condivisi da più client verso un unico server
- … è gratuito!
OSXvnc - Il server:
Una delle versioni più semplici da utilizzare la troviamo sul famosissimo sito open source della sourceForge: OSXvnc.
Possiamo lanciarlo sulla macchina che vogliamo condividere… anche lasciando tutti i parametri di default!
Basta cliccare sul grosso bottone "Start Server" ed il gioco è fatto… da questo momento (e fino allo stop!) è possibile prendere il controllo di questa macchina.
Chicken of the VNC - Il client:
Anche in questo caso, troviamo un valido client su sourceForge: Chicken of the VNC.
Lanciamolo su una seconda macchina e apriamo una connessione verso la prima, su cui abbiamo lanciato il VNC-server.
Lasciamo nuovamente tutti i parametri di default… e voilà! Dovremmo vedere in una finestra il desktop della nostra macchina remota!
Dopo i primi esperimenti… uno sguardo alla sicurezza:
Per questioni di sicurezza, è meglio evitare di lasciare il VNC-server sempre aperto su tutte le macchine che ci interessa controllare da remoto! Piuttosto impariamo a lanciare il VNC-server in modalità "localhost", da linea di comando, e condiamo il tutto con una connessione sicura tramite ssh!
Supponendo di aver installato OSXvnc nella cartella Applicazioni, possiamo lanciare il server da linea di comando in questo modo:
[host1:~] root% /Applications/OSXvnc.app/OSXvnc-server
Con il parametro -help otteniamo un elenco dei parametri configurabili:
[host1:~] root% /Applications/OSXvnc.app/OSXvnc-server -help
Available options:
-rfbport port TCP port for RFB protocol
-rfbwait time max time in ms to wait for RFB client
-rfbauth passwd-file use authentication on RFB protocol
(use 'storepasswd' to create a password file)
-deferupdate time time in ms to defer updates (default 0)
-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: no)
-disableRemoteEvents ignore remote keyboard, pointer, and pasteboard event
(default: no, process them)
-rfbLocalBuffer run the screen through a local buffer, thereby
enabling the cursor
(default: no, it's slow and causes more artifacts)
-localhost Only allow connections from the same machine
If you use SSH and want to stop non-SSH connections
from any other hosts
(default: allows remote connections)
Nel nostro caso ci interessa soltanto l’opzione -localhost che offre la sicurezza di accettare solamente connessioni locali (localhost) e non da computer remoti!
Sembra un controsenso! Se non accetta connessioni remote, come facciamo a collegarci da un computer… remoto? !!!
Ci viene doppiamente in aiuto il buon ssh.
Vediamo come:
Sul server (sulla macchina da condividere/monitorare) lanciamo il VNC-server in modalità -localhost utilizzando i privilegi di root:
[server1:~] root% /Applications/OSXvnc.app/OSXvnc-server -localhost
09/07/2003 00:07:57 Started Listener Thread on port 5900
09/07/2003 00:07:57 Registering Screen Update Notification
Sulla macchina client apriamo una sessione terminale e chiediamo ad ssh di aprire un canale sicuro verso il nostro server (server1.myCompany.it) e di rigirare le chiamate dalla porta "5900 del client" alla porta "5900 del server" (cha relativamente al processo ssh che gira sul server1 si chiama proprio: localhost).
In pratica:
[client1:~] user1% ssh -N -L 5900:127.0.0.1:5900 server1.myCompany.it
user1@server1.myCompany.it's password:
A questo punto non ci resta che lanciare il VNC-client "Chicken of the VNC" indicando come indirizzo: localhost e lasciando che ssh faccia il suo lavoro di reindirizzamento…
Per approfondimenti:
Per approfondire l’utilizzo di ssh in modalità "Forward Local Port" vedere l’articolo:
Per il VNC-server:
Per il VNC-client:
Per il sito ufficiale di VNC dei laboratori della AT&T:
RSS 2.0
Atom