[HOW-TO] VNC e JAVAVNC : Il Browser come client

Spesso si ha la necessità di controllare il proprio pc via remoto.
Di solito, gli amanti del pinguino, utilizzano SSH per risolvere questo problema. SSH permette, in poche parole, di controllare via "shell" il proprio PC da remoto. Inoltre attraverso l'SFTP è possibile aver un accesso ai file simile ad FTP.
Ma se avessimo la necessità di controllare "graficamente" il nostro pc da remoto?
Le vie per risolvere questo problema sono tante, io personalmente utilizzo VNC + JAVA + BROWSER.
Procediamo con ordine, per prima cosa chiunque volesse approfondire le sue conoscenze su VNC (cosa è, come funziona etc etc) lo invito a guardare questa pagina. Altrimenti se siete più "pratici" che altro, proseguite senza farvi tante domande con questo how-to. ![]()
Passo 1:
Per prima cosa installare sul pc che si vuole controllare da remoto i seguenti pacchetti x11vnc vnc-java, ad esempio da terminale con:
sudo apt-get install x11vnc vnc-java
Passo 2:
Da terminale, memorizzare una password per l'utente corrente:
x11vnc -storepasswd
Questa password servirà per autenticarsi via client! (Attenzione l'utente sarà colui che ha memorizzato questa password. Se lo fate da root, quindi sarà "root")
Passo 3:
Avviare il server in ascolto sulla porta 5800, da terminale, con:
x11vnc -forever -usepw -httpdir /usr/share/vnc-java/ -httpport 5800
Volendo si potrebbe mettere questo comando tra le sessioni di avvio in modo da farlo partire automaticamente appena effettuato il login !
Passo 4:
Nel caso siate in una rete locale, quindi con un router, configurare il port forwarding delle porte 5800 e 5900 verso l'indirizzo IP di rete locale del vostro server. (Questo serve per poter accedere dall'esterno)
Passo 5:
Avviare un browser (Firefox, Chrome, Safari) con supporto a Java e digitare nella barra indirizzi:
http://ipdelserver:5800
Dovreste avere una pagina simile a:

Considerazioni e Consigli
Per lanciare un server in ascolto per normali client su porta 5900 (non per il browser) utilizzare:
x11vnc -forever -usepw
Per permettere le connessioni multiple aggiungere -shared al comando di avvio!
Enjoy

SPONSOR
Commenti
Enrico (NR) il 03/05/10
Browser: Chrome
OS: Linux
Favoloso! Appena arrivo a casa lo provo!
Ethernaly il 03/05/10
Browser: Chrome
OS: Mac
Post counter: 37
se hai problemi fammelo sapere
Lo trovo un metodo comodo, e tra le altre cose lo uso anche attraverso l'iPhone!
Ingalex (NR) il 03/05/10
Browser: FireFox
OS: Ubuntu
Ho provato sia con Chromium che con Firefox e con Chrome crasha KDE mentre con Firefox non da nessun problema. Questo vale però all'interno della rete wifi locale. Se provo a contattare il pc server dall'esterno della rete non va.
Questo perchè nonstante abbia aperto le porte 5800 e 5900 sia TCP che UDP relativamente all'ip del server, il router pirelli gate non mi da la possibilità di abilitare anche il forwarding per deviare le connessioni in ingresso a quelle porte verso l'ip interno alla rete del pc server. Non so se ci sono delle alternative.
Ethernaly il 03/05/10
Browser: Chrome
OS: Mac
Post counter: 37
Ciao, per il problema relativo a chromium prova a verificare che java sia riconosciuto e perfettamente funzionante. In alternativa avvia Chromium da terminale.. e quando crasha vedi l'output che ti scrive e caso mai lo posti qui (non tutto prova a individuare le righe del crash
Per quanto riguarda il forwarding, io ho un alice gate voip 2 plus wifi. Per configurare il port forwarding, avvio il browser vado all'indirizzo 192.168.1.1 poi mi sposto in PORT MAPPING e li utilizzo Virtual server personalizzati per configurare i forwarding (ti allego un immagine)
Ciau!
Ingalex (NR) il 03/05/10
Browser: FireFox
OS: Ubuntu
Il mio è un modello più vecchio senza VOIP: Alice Gate 2 plus Wi-Fi AGA_3.2.4 e nella schermata relativa al virtual server mi da solo la possibilità di aprire le porte configurando il virtuale server tramite questi form
Ethernaly il 03/05/10
Browser: Chrome
OS: Mac
Post counter: 37
In porta pubblica metti 5900 in locale 5900 e poi collegato a:
IPPUBBLICO:5900
non funziona?
Molto strano!
Ingalex (NR) il 03/05/10
Browser: FireFox
OS: Ubuntu
Non mi da la possibilità di collegarlo ad un ip. Ma solo di settare la porta pubblica, quella locale e l'ip/nome del pc interno alla rete locale. Quindi consente solo di aprire le porte per quel determinato ip.
Ethernaly il 03/05/10
Browser: Chrome
OS: Mac
Post counter: 37
si esatto è giusto! La situazione deve essere:
Server da voler controllare (in cui hai installato i pacchetti vnc) --->Router-->Pc client (dove utilizzi il browser)
Metti caso che il server ha l'indirizzo 192.168.1.50 allora il forwarding del router deve essere:
Il traffico "ALL" della porta 5900(esterna) deve essere indirizzato al 192.168.1.50 su 5900(interna)
Quindi da locale utilizzerai 192.168.1.50:5900 dall'esterno IPPubblico:5900
Ingalex (NR) il 03/05/10
Browser: FireFox
OS: Ubuntu
Prima di questo router wifi avevo il SANCTIS50 (molto vecchio) e con quello riuscivo a settare il portforwarding, oltre al fatto che potevo settare una marea di parametri.
I router alice gate sono più orientati verso l'utente medio e dato che automatizzano tutto, consentono di settare solo pochi parameatri.
Ci sono delle guide su come sbloccare il router per le impostazioni avanzate (tra le quali anche telnet):
-Cortocircuintanto un ponticello
-oppure utilizzando un backdoor che frutta un bug di quel modello di router.
Solo che non ho mai voluto azzardarmi a tentare una di queste due modifiche per paura di danneggiare il router
Ethernaly il 03/05/10
Browser: Chrome
OS: Mac
Post counter: 37
Personalmente, posso dirti che il metodo del ponticello ha funzionato alla grande con il mio modello. (ne ho 2 uguali e l'ho fatto per prova sul secondo)
Tramite questo metodo ho fatto un downgrade di versione e ho uploadato un FW con la modalità avanzata disponibile
Ingalex (NR) il 03/05/10
Browser: FireFox
OS: Ubuntu
Le regole che ho applicato sono:
ipserver (192.168.1....) porta pubblica/privata 5800 UDP/TCP
ipserver (192.168.1....) porta pubblica/privata 5900 UDP/TCP
Ma non so perchè non va se contatto:
http://ippubblico:5800
o anche
http://ippubblico:5900
Ingalex (NR) il 03/05/10
Browser: FireFox
OS: Ubuntu
Comunque è molto strano perchè alla fine sono le stesse impostazioni con le quali (con altre porte) funzionano amule, ktorrent, amsn, kvirc ....
Ethernaly il 04/05/10
Browser: Chrome
OS: Mac
Post counter: 37
Occhio che dalla tua lan, non funzionerà il tuoi IP Pubblico! Devi testarla con un'altra connessione!
Alessandro (NR) il 04/05/10
Browser: Chrome
OS: Linux
e se la provo sempre tramite la mia connessione ma dietro un proxy?
Ethernaly il 04/05/10
Browser: Chrome
OS: Mac
Post counter: 37
Potrebbe funzionare ma solo in condizioni specifiche. Che proxy stai utilizzando? Credo che di fondo ci siano i seguenti grossi problemi:
- Il proxy potrebbe essere filtrato
- Il proxy potrebbe aver disattivato componenti fondamentali per il funzionamento del sistema
- Il proxy potrebbe rifiutare la connessione su altre porte
Potresti provare con:
- hidemyass.com/proxy/ ma non posso garantirti il suo funzionamento (di buono ha che non filtra le porte ma non sò se filtra il traffico!)
Ciao
Alessandro (NR) il 04/05/10
Browser: Chrome
OS: Linux
Ho provato con hidemyass che già conoscevo e con altri anonimizer, di fatti non viene visualizzata la pagina però mi appare la schermata del login. Quindi vuol dire che sta funzionando e che si riesce ad accedere. L'unico problema che dopo essersi loggati java va in crash ma sicuramente è dovuto a qualche filtro.
Alessandro (NR) il 04/05/10
Browser: Chrome
OS: Linux
Poi in pratica, ieri ti dissi che quando utilizzo chromuim appena mi loggo quando termina di caricare l'applet java crasha tutto KDE e si riavvia la modalità grafica.
Ho notato che si verifica anche con Firefox però una volta che viene riavviata la modalità grafica, se riprovo non crasha.
Ethernaly il 04/05/10
Browser: Chrome
OS: Mac
Post counter: 37
Usi architettura a 64bit o 32bit?
Riesci a produrre qualche log? Così da individuare la causa del crash!
Ciao
Alessandro (NR) il 05/05/10
Browser: FireFox
OS: Ubuntu
Il problema è proprio questo perchè anche se lo avvio da terminale, se crasha KDE e si riavvia la modalità grafica, non posso vedere nessun output. A meno che man mano che viene prodotto l'output non venga conservato in un file. Bisognerebbe redirigere l'output in un file. Ma in questo caso non so come fare.
Ethernaly il 05/05/10
Browser: Chrome
OS: Mac
Post counter: 37
Da terminale:
firefox > prova.txt 2>&1
Dovrebbe funzionare!
Fammi sapere
Alessandro (NR) il 06/05/10
Browser: FireFox
OS: Ubuntu
ho fatto la prova che mi hai detto ma con chromium e l'output è stato questo:
chromium-browser: Fatal IO error 11 (Risorsa temporaneamente non disponibile) on X server :0.0.
exe: Fatal IO error 11 (Risorsa temporaneamente non disponibile) on X server :0.0.
In pratica appena si effettua il login alla pagina http://ipserver:5800
va in crash il server X
Penso che il problema sia identico per firefox.
Alessandro (NR) il 06/05/10
Browser: FireFox
OS: Ubuntu
Però una volta che viene riavviata l'interfaccia grafica di KDE se ripeto l'operazione il server X non crasha più.
Ethernaly il 06/05/10
Browser: Chrome
OS: Mac
Post counter: 37
Per caso utilizzi compiz o qualche "effetto" grafico? Spesso questo tipo di problemi è dato da Compiz et simili.
Da terminale:
java -version
Per sicurezza riprova con firefox per vedere se ti da lo stesso errore.
Alessandro (NR) il 06/05/10
Browser: Chrome
OS: Linux
Io uso Kubuntu, ma compiz non è attivo perchè preferisco usare quelle preziose risorse per altro dato che non ho molta ram sul notebook. La versione di java installata è quella della sun presente nei repository canonical. L'altro java presente come predefinito in Kubuntu l'ho rimosso.
Più tardi riprovo con Firefox anche se da quello che vedo il comportamento è proprio lo stesso che si verifica con Chromium.
Ethernaly il 06/05/10
Browser: Chrome
OS: Mac
Post counter: 37
java -version
Restituisce non solo se java è di Sun o meno.. ma anche la versione!
Nei repo di Ubuntu si trova la 5 e la 6! (non ricordo quale degli update..)
Magari cambiando pacchetto jre (da 5 a 6 o viceversa) risolvi! (è solo un ipotesi, purtroppo io non riesco a riprodurre il problema)
Alessandro (NR) il 06/05/10
Browser: FireFox
OS: Ubuntu
Allora questo è il messaggio di errore che si ha con Firefox:
App startup
kmozillahelper: Fatal IO error: client killed
Interrotta dal corrispondente) on X server :0.0.
$ java -version
java version "1.6.0_20"
Java(TM) SE Runtime Environment (build 1.6.0_20-b02)
Java HotSpot(TM) Client VM (build 16.3-b01, mixed mode, sharing)
$ sudo apt-cache policy sun-java6-bin
sun-java6-bin:
Installato: 6.20dlj-1ubuntu3
Candidato: 6.20dlj-1ubuntu3
Tabella versione:
*** 6.20dlj-1ubuntu3 0
500 http://archive.canonical.com/ubuntu/ lucid/partner Packages
100 /var/lib/dpkg/status
A me cercando nei repository canonical per lucid non trova la versione 5. C'è solo la 6. Potrebbe essere un bug di sun-java6. Oppure del server X.
Ethernaly il 06/05/10
Browser: Chrome
OS: Mac
Post counter: 37
Lucid, non ha il pacchetto java5 nei repo. Io di solito installo Java da pacchetto ufficiale sun ma non è una cosa semplicissima da fare! (avevo fatto un how to ma sul vecchio sito! A breve lo dovrei ri-pubblicare!)
Tra l'altro hai KDE e io personalmente non lo utilizzo.. Se mi viene in mente qualcosa lo scrivo!