Balader son bureau en campagne
Cet article présente des trucs et astuces afin de configurer ses connections SSH, que se soit pour VNC, ou via un tunnel HTTP.
Forwarding X11
Cette n’est pas réellement une prise de contrôle à distance, mais permet d’utiliser les ressources distantes tout en redirigeant le display localement :
– Tout d’abord il faut mettre l’option SSH x11forwarding
sur "yes" ;
– Puis se connecter sur la machine remote : ssh -X user@monserver
;
– On peut dès lors tester avec un programme comme xclock.
X11vnc
– Installer x11vnc sur votre machine serveur. Cela crée un serveur X bidon sur lequel est lancé votre session ;
– Puis sur la machine distante, lancer xvncviewer monserver:1
et vous serez comme chez vous.
P.S. il existe des clients pour Windows, svgalib, ...
Par défaut, VNC n’est pas un protocole sécurisé, toutefois, VNC peut être mis dans un tunnel sur une connexion SSH :
– Pour cela sur la machine cliente ssh -L 5902:localhost:5901 monserver
;
– Dès lors toutes les références au display :2 de la machine cliente sera redirigé au display :1 de la machine serveur ;
– Et lancer xvncviewer :2
séparément.
En une seule ligne de comande :)
ssh -t -L 5902:localhost:5901 monserver 'x11vnc -localhost -display :0'
VNC / Ubuntu
Machine à contrôler :
– Installez le paquet openssh-server
– Configurez le firewall afin d’accepter les connexions SSH entrantes (port 22), et si vous utilisez un routeur, il faudra également que les connexions soient acceptées et routées vers la bonne machine
– Dans le fichier /etc/ssh/sshd_config
, créez ou mettez la ligne GatewayPorts sur "yes"
– Dès lors que la liaison VNC va être encapsulée dans le tunnel SSH, il n’est pas nécessaire de laisser le port 5900 ouvert
– Autorisez le bureau à distance : Système->Préférences->Bureau à distance
– Rq. si l’adresse IP attribuée par votre FAI n’est pas fixe, vous devriez vous intéresser aux services offerts par DynDNS
Machine qui contrôle :
– Dans un terminal (à laisser ouvert le temps de la session VNC) : ssh -L 5901:localhost:5900 -XC user@machine_a_contrôler
– Puis vncviewer localhost:1
Pour ceux qui veulent utiliser VNC en connexion inversée pour contrôler un ordinateur à distance à travers un NAT, X11vnc est à choisir plutôt que VNC.
Ce qui permet, en plus, la connection sans besoin de configurer le routeur de la personne assistée, car c’est elle qui initie le tunnel par lequel le viewer communiquera.
Sur le PC de l’assistant :
– Installer et configurer openssh-server, créer un utilisateur dédié à cet usage, noter son login et son mot de passe
– Configurer la redirection du port 22 du routeur vers le PC de l’assistant
– Noter son adresse IP externe (ou mettre en place un nom de domaine dynamique genre <assistant.dyndns.org> )
Sur le PC de l’assisté :
– Activer le Bureau à distance Système->Préférences->Bureau à distance
– Lancer un terminal et taper :
ssh -N -R 5901:*:5900 login_assistant@ip_assistant
– Et taper le mot de passe fourni par l’assistant.
Enfin sur le PC de l’assistant :
– Lancer vncviewer
– Se connecter à localhost:1
– C’est parti !
HTTP-Tunnel
HTTP-Tunnel sert à encapsuler des paquets d’un autre protocole (FTP, SSH, etc) dans des paquets HTTP, pour passer proxys et pare-feux (par exemple au boulot) :
– Le serveur "hts" écoute sur le port TCP 8821 de l’adresse
IP du serveur, et redirige tout ce qui arrive vers le port 22 de
la même machine (localhost) :
hts -F localhost:22 8821
– On configure la règle NAT adéquate sur la box (routeur).
– Sur le client on transfère le port de connexion SSH (2222) vers le
serveur HTTP-Tunnel (monserver:8821) et il faut paramétrer
le proxy :
htc -F 2222 -P proxy_addr:8080 monserver:8821
– Ensuite il suffit de lancer la commande suivante sur le client pour se
connecter au serveur :
ssh user@localhost:2222