Cette page est considérée comme vétuste et ne contient plus d'informations utiles.
Cette page est en cours de rédaction.
Apportez votre aide…

Ceci est une ancienne révision du document !


XRDP ou comment se connecter depuis un client RDP® sur un serveur Ubuntu

On peut être confronté à des machines windows® verrouillées, sur lesquelles on ne peut rien installer, et où seul le protocole RDP® est disponible. Par exemple des clients légers.

Si l'on souhaite se connecter depuis ces machines sur un serveur Ubuntu, une seule solution : installer XRDP sur ce dernier.

Cette page est en cours de rédaction. Le brouillon manuscrit se trouve sur ma table de travail.

MERCI DE NE PAS MODIFIER CETTE PAGE TANT QUE CET AVERTISSEMENT SERA LÀ.

Savoir installer un paquet, éditer un fichier et contrôler la machine distante à l'aide d'un autre protocole, typiquement ssh, en vue des tests.

Xrdp est une couche s'installant sur le serveur. Elle fait office de serveur RDP® pour le client qui veut se connecter, et se comporte comme un client VNC pour le serveur ubuntu.

Entre les deux, se glisse un gestionnaire de session dénommé sesman, qui :

  • donne le choix, à la connexion, entre différents modules. Ceux-ci sont listés dans /etc/xrdp/xrdp.ini, VNC en fait partie.
  • appelle PAM pour l'authentification.
  • fait en sorte que le néo client VNC, avatar du client RDP, trouve bien une session VNC fonctionnelle. Le plus souvent en la créant, à l'aide des paramètres choisis dans /etc/xrdp/sesman.ini et /etc/xrdp/startwm.sh.

Comme XRDP fait appel à VNC, il n'est pas inutile de découvrir ce dernier (si vous ne le connaissez pas déjà). Ce n'est pas indispensable non plus.

VNC permet de prendre le contrôle à distance d'une machine (comme déjà décrit ici) et il permet, en outre, de créer autant de machines virtuelles qu'on le souhaite. Ainsi, "à côté" de la session (numérotée :0) ouverte sur la machine distante, peuvent exister d'autres sessions :1, :2, etc. qui utilisent les ressources de cette même machine.

Pour créer une session virtuelle, il n'est pas nécessaire d'être root. Il faut exécuter sur le serveur la commande "vncserver", accompagnée de plusieurs paramètres, dont certains sont indispensables pour corriger (en) le bug #78282 (voir post #57).

Pour visualiser une session distante déjà créée, il faut exécuter sur le client la commande "vncviewer". Celle-ci s'accompagne inévitablement du nom de la machine distante ainsi que du n° de la session créée.

2.1. Sur le serveur

user0@serveur:$~ sudo apt-get install vnc4server

installe le paquet vnc4server qui permet la création des machines virtuelles. Créons notre première machine, numérotée 14 (Pourquoi 14 ? Parce que) :

user0@serveur:$~ vncserver :14

Ah, surprise, lors de cette première exécution, "vncpassword" se lance et demande un mot de passe qui sera celui de toutes les machines créées par user0 sur "serveur". Il est stocké dans le fichier /home/user0/.vnc/passwd. Pour en changer, il faut supprimer ce fichier et exécuter à nouveau "vncpassword".

L'examen de /home/user0/.vnc/serveur:14.log, montre les erreurs suivantes :

  • l'absence du fichier /etc/X11/xserver/SecurityPolicy. Solution : Créer le répertoire /etc/X11/xserver/ et y copier le fichier SecurityPolicy que l'on trouve (en) on the net (voir post #5).
  • une liste de polices de caractères non trouvées. Il s'agit du bug déjà évoqué. Solution : Ajouter les paramètres -fp /usr/share/fonts/X11/misc ainsi que -extension XFIXES.

La nouvelle commande ressemble donc à :

user0@serveur:$~ vncserver :14 -fp /usr/share/fonts/X11/misc -extension XFIXES

Désormais, le log ne fait plus mention d'aucune erreur. Mais si l'on se connecte à la machine ainsi créée (cf 2.2.), on est déçu : pas d'environnement graphique, un fond grisâtre et une pauvre console. Il faut maintenant utiliser son éditeur préféré pour modifier le fichier /home/user0/.vnc/xstartup en sorte qu'il ressemble à ceci :

#!/bin/sh
# Uncomment the following two lines for normal desktop:
unset SESSION_MANAGER
exec sh /etc/X11/xinit/xinitrc
#[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup                 /* Ce répertoire n'existe pas ou plus */
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
#xsetroot -solid grey                                               /* Joli fond d'écran gris */
#vncconfig -iconic &                                                /* Fait apparaître vncconfig sous forme de case à cocher en fond d'écran */
#xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &     /* Terminal tout pourri */
#twm &                                                              /* twm est un ancien gestionnaire de fenêtre, très rudimentaire */

Il faut ensuite rendre ce fichier exécutable en lui donnant les droits 755 (s'il ne les as pas déjà).

user0@serveur:$~ sudo chmod 755 /home/user0/.vnc/xstartup

Désespoir, l'examen de /home/user0/.vnc/serveur:14.log montre l'erreur suivante :

  • Permission denied pour /etc/X11/xinit/xinitrc. Solution : Le rendre exécutable en lui donnant les droits 755.
user0@serveur:$~ sudo chmod 755 /etc/X11/xinit/xinitrc

À présent, tout doit marcher convenablement. Dernière commande, pour tuer la machine créée :

user0@serveur:$~ vncserver -kill :14

D'autres paramètres peuvent être passés avec vncserver :

  • depth qui force la profondeur des couleurs du bureau créé.
  • localhost qui n'autorise que les connexions provenant de la même machine.
  • DisconnectClients
  • NeverShared

Ces options seront très utiles avec XRDP. Pour les autres, on se reportera avec profit aux pages man de vncserver.

2.2. Sur le client

user0@client:$~ vncviewer serveur:14

visualise la machine virtuelle serveur:14 que nous avons créée. Il faut saisir le mot de passe donné lors de la première exécution de vncserver. Il n'est pas obligatoire d'être l'utilisateur qui a créé la session. Ainsi :

user1@client:$~ vncviewer serveur:14

accède aussi à la machine virtuelle serveur:14, sous réserve de renseigner correctement le mot de passe. On peut enfin tenter :

user0@client:$~ vncviewer serveur:0

afin de voir la session "réelle" éventuellement ouverte sur la machine distante. Cela fonctionne si l'utilisateur connecté à coché la case "Autoriser d'autre utilisateurs à voir votre bureau" dans les préférences du bureau à distance.


Contributeurs principaux : legaub.

  • xrdp.1265620647.txt.gz
  • Dernière modification: Le 08/02/2010, 10:17
  • par legaub