Nous allons voir dans cet article comment utiliser graphiquement un bureau linux distant à partir d'une machine windows ne disposant que de l'outil de connexion à distance fournit par Microsoft.

Introduction

NCD ThinSTAR Imaginez que vous ayez une machine Linux[1] et que vous vouliez en prendre le contrôle à partir d'une machine Windows. Facile, on installe VNC ou un serveur X sur le client et hop ça roule !

Mais si vous ne pouvez rien installer sur le Windows ? C'est assez fréquent en entreprise. Il ne vous reste que le client de connexion à distance de Microsoft. Hors celui-çi utilise un protocole propriétaire non nativement supporté sous Linux : RDP. Flûte voici une impasse.

Ne vous désolez pas si vite, il existe une solution ! J'ai nommé xrdp. Il s'agit d'une sorte de proxy qui sera serveur RDP pour le client windows et client VNC pour un serveur sous Linux.

Mais quelle drôle d'idée ! En fait non, j'ai acquis il y a peu de temps un client léger ThinSTAR 400. Malheureusement, celui-ci n'est prévu pour fonctionner qu'avec des serveurs sous Windows[2]. Voila donc pourquoi je me suis intéressé à cette solution[3]

Shema

Installation

Note : Je viens de voir qu'une nouvelle version est sortie (0.4 le 2 juin) Je n'ai pas trouvé de ChangeLog, mais un diff des répertoires indique que le code n'a pas changé, seulement quelques fichiers textes. Donc fonctionnellement elle est identique à celle que je vous propose.

Ce soft n'est pas disponible dans les dépots il va donc falloir mettre un peu les mains dans le cambouis. La deux solutions :

  • compiler à partir des sources, je vous renvoi alors vers les liens en fin d'article. Mais regardez quand même la section patches, car certaines modifications sont nécessaires pour qu'il fonctionne correctement ;
  • utiliser la version déjà compilée et patchée que je vous fournit gracieusement, c'est ce que je vais détailler ci-dessous.

Vous trouverez donc la : xrdp-0.3.2-fr-feisty.tar.bz2 une version fonctionnelle pour Ubuntu Feisty qu'il vous suffit de décompresser dans /opt. Attention le répertoire est important car pleins de chemins sont compilés en dur dans le code :( Cela vous créera un répertoire xrdp avec tout ce qu'il faut[4].

Il vous faut aussi le paquet vnc4server. Par exemple, vous pouvez l'installer avec :

sudo aptitude install vnc4server

Modifiez ensuite le fichier /opt/xrdp/bin/startwm.sh pour lancer le windows manager qui vous convient. Par défaut il s'agit de KDE, les commentaires dans le fichier sont assez clairs.

Bien entendu, cette version est fournie sans autre garantie que chez moi ça marche. Si vous ne me faites pas confiance, vous trouverez ci-dessous les modifications que j'ai apportés pour pouvoir recompiler votre propre version.

Utilisation

Voyons maintenant comment utiliser xrdp pour se connecter à partir de Windows. C'est assez simple :

Lançons d'abord xrdp. L'option nodaemon peut être enlevée à terme.

cd /opt/xrdp/bin
./xrdp -nodaemon

Ensuite sesman qui est le gestionnaire de session et qui gère l'authentification. Il doit être lancé en tant que root.

sudo ./sesman --nodaemon

Vous pouvez tester le login avec la commande suivante. <user> et <password> doivent bien entendu être remplacés par les bonnes valeurs. Les chiffres correspondent à la résolution de l'écran.

./sesrun localhost <user> <password> 1024 768 24

Enfin, il vous suffit de vous connecter à partir du client Windows.
Attention lors du login, le clavier est en qwerty !

Fenêtre de Login

Et voila une nouvelle session X est ouverte ! Screenshot C'est une kubuntu ouverte à partir d'un windows virtualisé sous la même kubuntu. Vous suivez ?

La même session, mais à partir de mon NCD ThinSTAR sous Windows CE : Screenshot

Patches

Plusieurs bugs posent problème pour utiliser la version vanilla de xrdp sous Ubuntu en français.

Tout d'abord xrdp ne sait gérer qu'un clavier Américain. Mais on trouve sur le site sourceforge un hack pour le clavier Allemand. Je l'ai adapté pour le clavier Français. Il reste quand même quelques limitations :

  • la touche AltGr est remplacée par la touche Alt gauche. Pensez-y pour les caractères comme @ # ...
  • les touches accentuées semblent ne pas fonctionner dans tous les cas :(
  • seul le clavier de base est géré, vous n'aurez pas accès à toute la keymap fr-latin9, adieu € Æ « et autres spécificités.

Ensuite, la paquet Xvnc fournit par Ubuntu est buggé et nécessite des options spécifiques pour fonctionner correctement. J'ai ajouté celle-ci aux paramètres de lancement qui sont eux aussi codés en dur dans xrdp.

En cas d'échec de l'authentification, sesman affiche aussi le user/password en clair, ça m'a été bien utile pour voir que le login se faisait en qwerty :)

Pour plus de détails, vous pouvez jeter un oeil aux modifications que j'ai apporté au code. Vous trouverez la xrdp-0.3.2-fr-feisty.diff les différences complètes entre la version vanilla et celle que je vous propose.

Quelques liens

Notes

[1] vous devez être beaucoup parmi mes lecteurs :)

[2] On peux lui installer un serveur X, mais je n'ai pas les softs pour

[3] Oui, c'est mon blog, je raconte ma vie si je veux !

[4] Je n'ai pas eu le courage de me lancer dans la création d'un paquet, si cela dit à quelqu'un ...