venerdì 10 ottobre 2008

Windows XP: PuTTY, Xming e X11 Forwarding

La VPN del mio ufficio e' raggiungibile da remoto. Questo oltre a servire ai miei partner commerciali e ai loro agenti per operazioni di carattere piacevolmente burocratico, serve anche a me per poter fare un po' di manutenzione senza dover essere giorno e notte davanti alla console.
Ora sto studiando una valida implementazione del portknocking per mantenere webmin disponibile solo su combinazione.
Peraltro webmin e' un ottimo applicativo, che permette di configurare i servizi piu' complessi letteralmente con solo un paio di click di mouse.
Ma veniamo a noi. Il server dell'ufficio e' raggiungibile via ssh, con autenticazione su certificato. La cosa utile di ssh e' il forwarding dei servizi X11. Ma voglio essere preciso, il forwarding e' supportato anche dal telnet, ma con una differenza: supponiamo che io mi trovi sul server "hercule.poirot" e voglia aprire una sessione sul server "miss.marple", attivando l'X11 forwarding per eseguire la calcolatrice. Ecco come dovrebbe segursi la sessione usando telnet:
captain@poirot:/home/hastings$ xhost +miss.marple
miss.marple being added to access control list
captain@poirot:/home/hastings$ telnet miss.marple

IRIX (miss.marple) (ttya9)

login: jane
Password:

Last login: Thu Oct 9 21:42:18 2008 from ned.ipac.caltech.edu
SGI-IRIX 5.5 running on CRAY X-MP
$ export DISPLAY=hercule.poirot:0.0
$ xcalc
(Apprezzo chi sta versando qualche lacrimuccia riguardo all'idea di loggarsi su un X-MP per lanciare la calcolatrice)
Ora, la situazione appare leggermente diversa aprendo una sessione ssh con autenticazione su certificato: tutti questi passaggi si stringono ad un singolo e semplice comando:
captain@poirot:/home/hastings$ ssh -X jane@miss.marple xcalc
Per questo ssh oltre ad essere sicuro e' estremamente versatile. Il problema e' che un client OpenSSH c'e' in ogni distribuzione di Linux, ed eseguendo ssh da un terminale X11 (xterm, eterm, gnome-terminal, konsole, etc) con l'opzione "-X" il forwarding semplicemente funziona.
Il problema e' se capita di avere a disposizione uno stramaledetto computer che anziche' disporre di Linux, BSD o altro UNIX equivalente, si trova il classico Windows XP.
Ma non e' un problema enorme: ecco come procedere.

* Anzitutto si installa PuTTY (scegliete Windows installer), per avere il client ssh compatibile con Windows;
* Poi si installa Xming (attenzione: solo Xming, non necessariamente il resto dei pacchetti, plugin e compagnia briscola), per avere a disposizione un display X11 senza dover installare CygWIN e decine di mega di roba inutile... Assicuratevi che dopo l'installazione Xming sia in esecuzione (icona con la X nera sulla barra di avvio rapido);
* Generate (se non lo avete gia' fatto) la vostra chiave pubblica e segreta per ssh (sotto Linux usate ssh-keygen) e conservatele (copiatele su un pendrive, masterizzatele, stampatele, fatene quel che volete ma fate in modo che la chiave segreta resti comunque tale), poi ponete la vostra chiave pubblica in /home/vostroutente/.ssh/authorized_keys (ovviamente sul server *sul quale* volete poter accedere da remoto);

Andate sul client Windows, aprite PuTTYgen (Start -> Tutti i programmi -> PuTTY -> PuTTYgen), e al menu "Conversions" selezionate "import key". Importate la vostra chiave privata e poi dategli "Save Private Key", salvando la chiave segreta nel formato di PuTTY. Vi consiglio di proteggerla con password.

A questo punto dovete salvare la sessione di login con PuTTY. Lanciate PuTTY (materialmente Start -> Tutti i programmi -> PuTTY -> PuTTY): vi si apre la scheda "Session".
Cominciate con lo scrivere alla voce "Host Name (or IP address)" il vostro nome, separato dall'indirizzo della macchina di destinazione, nella forma "login@indirizzo" (senza virgolette), ad esempio grizzly@wereteddy.uibbs2-vpn.net
Andate su "SSH", aprite la chiave "Auth" e alla voce "Private key for authentication" date "Browse", e importate il file .ppk che avete generato prima. Poi spostatevi su X11 e spuntate la voce "Enable X11 forwarding".
Tornate di nuovo su "Session", scrivete un nome per questa sessione (ad esempio "Grizzly su Wereteddy") e clickate su Save.
Sotto la voce "Default settings" comparira' il nome della sessione appena salvata. Due click di mouse, la password della chiave segreta... e se tutto è andato bene vi si aprira' la finestra ssh dell'host di destinazione. (-:

2 commenti:

Francesco ha detto...

Ottima guida!

Chissa', potrebbe servirmi in futuro.

Grazie ;)

Anonimo ha detto...

Grazie, non sapevo come poter utilizzare x11 da windows: mi hai aperto un mondo, senza dover virtualizzare linux