Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
xrdp [Le 10/02/2010, 09:15] legaub |
xrdp [Le 17/02/2023, 20:47] (Version actuelle) 78.196.241.242 |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | {{tag>Xenial bureau_à_distance tutoriel BROUILLON vetuste}} | ||
+ | |||
+ | ---- | ||
====== XRDP ou comment se connecter depuis un client RDP® sur un serveur Ubuntu====== | ====== XRDP ou comment se connecter depuis un client RDP® sur un serveur Ubuntu====== | ||
- | {{tag>Karmic xrdp rdp bureau_à_distance client_léger tutoriel}} | + | <note warning>Cette documentation est largement obsolète. Les modifications des fichiers de configuration au point 3 sont certainement inutiles et empêchent probablement le fonctionnement de xrdp.</note> |
On peut être confronté à des machines windows<sup>®</sup> verrouillées, sur lesquelles on ne peut rien installer, et où seul le protocole [[wpfr>Remote_Desktop_Protocol|RDP®]] est disponible. Par exemple des [[wpfr>Client_léger|clients légers]]. | On peut être confronté à des machines windows<sup>®</sup> verrouillées, sur lesquelles on ne peut rien installer, et où seul le protocole [[wpfr>Remote_Desktop_Protocol|RDP®]] est disponible. Par exemple des [[wpfr>Client_léger|clients légers]]. | ||
Si l'on souhaite se connecter depuis ces machines sur un serveur Ubuntu, une seule solution : installer XRDP sur ce dernier. | Si l'on souhaite se connecter depuis ces machines sur un serveur Ubuntu, une seule solution : installer XRDP sur ce dernier. | ||
- | |||
- | <note warning> | ||
- | |||
- | 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À. | ||
- | |||
- | </note> | ||
- | |||
- | ===== Prérequis ===== | ||
- | |||
- | 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. | ||
- | |||
- | ===== 1. Structure générale ===== | ||
Xrdp est une couche s'installant sur le serveur. Elle fait office de serveur RDP<sup>®</sup> pour le client qui veut se connecter, et se comporte comme un client VNC pour le serveur ubuntu. | Xrdp est une couche s'installant sur le serveur. Elle fait office de serveur RDP<sup>®</sup> pour le client qui veut se connecter, et se comporte comme un client VNC pour le serveur ubuntu. | ||
Ligne 28: | Ligne 17: | ||
* fait en sorte que le néo client VNC, avatar du client RDP, se connecte à 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. | * fait en sorte que le néo client VNC, avatar du client RDP, se connecte à 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. | ||
- | ===== 2. Installer et (re)découvrir VNC ===== | + | ===== Prérequis ===== |
- | 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 primordial non plus. Dans ce cas, contentez vous d'installer le paquet vnc4server et passez au §3.** | + | |
- | VNC permet de prendre le contrôle à distance d'une machine (comme déjà décrit [[:vnc|ici]]) et il permet, en outre, de créer des machines virtuelles. Ainsi, "à côté" de la session (numérotée :0) ouverte "en réel" sur la machine distante, peuvent exister d'autres sessions :1, :2, etc. qui utilisent les ressources de cette même machine. | + | Installer vnc4server - Virtual network computing server software, ça fonctionne tel quel donc pas de configuration à modifier. |
- | 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 [[https://bugs.launchpad.net/ubuntu/+source/vnc4/+bug/78282|(en) le bug #78282]] (voir post #57). | + | Si Vino est déjà installé et actif il n'y aura pas de conflit. Il peut donc être ignoré. |
- | 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. | + | ===== Installation ===== |
- | __Remarque__ : Il existe une foultitude de version de VNC : UltraVNC, RealVNC, TightVNC, X11VNC, etc. ... Faites donc une recherche rapide dans Synaptic. Je n'ai pas cherché à les différencier : le tuto présenté ici utilise la version du paquet vnc4server. | + | [[:tutoriel:comment_installer_un_paquet|Installez le paquet]] **[[apt>xrdp]]**. |
- | === 2.1. Sur le serveur === | + | <note>sur 14.04 Trusty server,tout fonctionne sans aucun paramétrage supplémentaire... Certe la fenêtre texte est un peu petite! </note> |
- | <code>sudo apt-get install vnc4server</code> | + | ===== Configuration ===== |
- | 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) : | + | === Configuration de sesman === |
- | <code>vncserver :14</code> | + | [[:tutoriel:comment_modifier_un_fichier|Ouvrez le fichier]] **/etc/xrdp/sesman.ini**. |
- | 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 l'utilisateur en cours sur le serveur. Il est stocké dans le fichier /home/utilisateur_en_cours/.vnc/passwd. Pour en changer, il faut supprimer ce fichier et exécuter à nouveau "vncpassword". | + | Pour l'instant, rien ne fonctionne, car la section [Xvnc] ne contient que les quatre arguments : |
- | L'examen de /home/utilisateur_en_cours/.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 [[http://ubuntuforums.org/showthread.php?t=186035|(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 à : | ||
- | |||
- | <code>vncserver :14 -fp /usr/share/fonts/X11/misc -extension XFIXES</code> | ||
- | |||
- | 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/utilisateur_en_cours/.vnc/xstartup en sorte qu'il ressemble à ceci : | ||
- | |||
- | <code bash>#!/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 */ | ||
- | </code> | ||
- | On doit ensuite rendre ce fichier exécutable en lui donnant les droits 755 (s'il ne les as pas déjà). | ||
- | |||
- | <code>sudo chmod 755 /home/utilisateur_en_cours/.vnc/xstartup</code> | ||
- | |||
- | Désespoir, l'examen de /home/utilisateur_en_cours/.vnc/serveur:14.log montre une nouvelle erreur : | ||
- | * Permission denied pour /etc/X11/xinit/xinitrc. **Solution :** Le rendre exécutable en lui donnant les droits 755. | ||
- | |||
- | <code>sudo chmod 755 /etc/X11/xinit/xinitrc</code> | ||
- | |||
- | À présent, tout doit marcher convenablement. Lorsqu'on en a fini, on ferme la session distante avec la commande : | ||
- | |||
- | <code>vncserver -kill :14</code> | ||
- | |||
- | Pour terminer, d'autres paramètres peuvent être passés avec la commande "vncserver" : | ||
- | * //depth// (8, 15, 16, 24) qui force la profondeur des couleurs du bureau créé. | ||
- | * //localhost// (activé/désactivé) qui n'autorise que les connexions provenant de la même machine. | ||
- | * //NeverShared// (activé/désactivé) pour le partage de la session. | ||
- | * //DisconnectClients// (activé/désactivé) qui déconnecte en cas de nouvelle connexion non partagée. | ||
- | |||
- | Ces options seront très utiles avec XRDP. Pour les autres paramètres, on se reportera avec profit aux pages man de vncserver : | ||
- | |||
- | <code>man vncserver</code> | ||
- | |||
- | === 2.2. Sur le client === | ||
- | Installons tout d'abord le paquet contenant le client VNC : | ||
- | |||
- | <code>sudo apt-get install xvnc4viewer</code> | ||
- | |||
- | Premier essai : | ||
- | |||
- | <code>vncviewer serveur:14</code> | ||
- | |||
- | visualise la session virtuelle serveur:14 que nous avons créée sur la machine "serveur". 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, la même commande exécutée par un autre utilisateur, amène à la même fenêtre de connexion où le nom de l'utilisateur est grisé. Il suffit de renseigner correctement le mot de passe. On peut enfin tenter : | ||
- | |||
- | <code>vncviewer serveur:0</code> | ||
- | |||
- | 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. | ||
- | |||
- | On peut passer d'autres arguments intéressants avec la commande "vncviewer" (Autoselect=0 pour éviter d'engorger la bande passante, PreferredEncoding, ZlibLevel ...), mais comme nous ne maîtrisons pas le client RDP, il n'est pas utile de les approfondir. | ||
- | |||
- | ===== 3. Rajouter la couche XRDP sur le serveur ===== | ||
- | |||
- | Maintenant que le terrain est bien déblayé, un petit : | ||
- | |||
- | <code>sudo apt-get install xrdp</code> | ||
- | |||
- | installe le paquet xrdp, la dernière version étant la 0.4.1, elle est présente dans les dépôts. | ||
- | |||
- | === 3.1. Configurons les fichiers système === | ||
- | |||
- | Pour l'instant, rien ne fonctionne, car la section [Xvnc] du fichier /etc/xrdp/sesman.ini ne contient que deux arguments : | ||
<code> | <code> | ||
param1=-bs /* désactive le "backing store support" sur tous les écrans */ | param1=-bs /* désactive le "backing store support" sur tous les écrans */ | ||
param2=-ac /* interdit l'édition des listes de contrôle d'accès par le client */ | param2=-ac /* interdit l'édition des listes de contrôle d'accès par le client */ | ||
+ | param3=-nolisten | ||
+ | param4=tcp | ||
</code> | </code> | ||
- | Il faut donc ajuster ce fichier à sa convenance, et en compléter la section [Xvnc] avec : | + | Il faut compléter cette section, de la manière suivante: |
- | <code>param3=-fp | + | |
+ | <code> | ||
+ | param3=-fp /* ces quatre paramètres corrigent le bug #78282 du paquet vnc4server */ | ||
param4=/usr/share/fonts/X11/misc | param4=/usr/share/fonts/X11/misc | ||
param5=-extension | param5=-extension | ||
Ligne 134: | Ligne 54: | ||
Personnellement, j'y ai aussi ajouté : | Personnellement, j'y ai aussi ajouté : | ||
- | <code>param7=-depth | + | <code> |
+ | param7=-depth /* pour forcer la profondeur de couleur */ | ||
param8=16 | param8=16 | ||
- | param9=-localhost | + | param9=-localhost /* pour contraindre la connexion via xrdp */ |
- | param10=-NeverShared</code> | + | </code> |
- | N'oublions pas de redémarrer avec : | + | On peut aussi ajuster les autres paramètres à sa convenance (sections [Globals], [Security], etc. ...). ATTENTION, certaines options sont ignorées. (Voir la man page de sesman.ini.) |
- | <code>sudo /etc/init.d/xrdp restart</code> | + | === Menu de connexion === |
- | + | ||
- | Une nouvelle difficulté surgit si l'on veut passer, par exemple -DisconnectClient=0. En effet, impossible de glisser le signe "=" nulle part. | + | |
- | + | ||
- | On s'en sort grâce au script /etc/xrdp/startwm.sh auquel on ajoute la ligne suivante : | + | |
- | + | ||
- | <code>vncconfig -set DisconnectClients=0</code> | + | |
- | pour avoir finalement : | + | |
- | <code bash> | + | |
- | #!/bin/sh | + | |
- | + | ||
- | if [ -r /etc/default/locale ]; then | + | |
- | . /etc/default/locale | + | |
- | export LANG LANGUAGE | + | |
- | fi | + | |
- | + | ||
- | vncconfig -set DisconnectClients=0 | + | |
- | + | ||
- | . /etc/X11/Xsession | + | |
- | </code> | + | |
- | + | ||
- | Attention, l'utilisation de "vncconfig" fait que le nouveau paramètre ne sera pris en compte que lors du démarrage d'une nouvelle session. | + | |
- | === 3.2. Personnalisons le menu de connexion === | + | [[:tutoriel:comment_modifier_un_fichier|Ouvrez le fichier]] **/etc/xrdp/xrdp.ini**. |
- | Pour finir, on peut modifier le fichier /etc/xrdp/xrdp.ini, pour n'y laisser paraître que la connexion que nous avons correctement ajustée. On conserve simplement les sections [globals] et [xrdp1] que l'on renomme pour le fun : | + | Conserver simplement les sections [globals] et [xrdp1] que l'on renomme pour le fun : |
<code>[globals] | <code>[globals] | ||
Ligne 176: | Ligne 76: | ||
[xrdp1] | [xrdp1] | ||
- | name=legaub vous connecte sur un serveur Ubuntu | + | name=legaub vous invite sur un serveur Ubuntu |
lib=libvnc.so | lib=libvnc.so | ||
username=ask | username=ask | ||
Ligne 184: | Ligne 84: | ||
</code> | </code> | ||
- | Redémarrons le service. Vous pouvez désormais vous connecter à votre serveur en utilisant le protocole RDP<sup>®</sup>. | + | Redémarrer avec : |
+ | |||
+ | <code>sudo /etc/init.d/xrdp restart</code> | ||
+ | |||
+ | Vous pouvez désormais vous connecter à votre serveur en utilisant le protocole RDP<sup>®</sup>. | ||
+ | |||
+ | === Configuration du clavier === | ||
+ | Les configurations du clavier en local et en distant sont différentes. Ainsi si Ubuntu est en anglais à la base et même si en local, vous avez bien configuré le clavier en azerty, le clavier distant reste en qwerty. | ||
+ | Voici la commande à exécuter **en local**, (pas en session distante) ! | ||
+ | <code>sudo xrdp-genkeymap /etc/xrdp/km-0409.ini</code> | ||
+ | relancer votre session distante si elle était ouverte. | ||
+ | |||
+ | ===== Problème de configuration ===== | ||
+ | |||
+ | Une difficulté surgit si l'on veut passer, par exemple -DisconnectClients=0 ou -NerverShared=1. En effet, impossible de glisser le signe "=" nulle part. | ||
+ | |||
+ | [[:tutoriel:comment_modifier_un_fichier|Ouvrez le fichier]] **/etc/xrdp/startwm.sh**. | ||
+ | |||
+ | Ajouter les lignes suivantes : | ||
+ | |||
+ | <code>vncconfig -set NeverShared=1 | ||
+ | vncconfig -set DisconnectClients=0 | ||
+ | </code> | ||
+ | |||
+ | Attention, l'utilisation de "vncconfig" fait que le nouveau paramètre ne sera pris en compte que lors du démarrage d'une nouvelle session. | ||
+ | |||
+ | <note>{{ :capture2.jpg?nolink&300|}} Essais sur ubuntu 16.04 depuis Windows 7 : Le log de connexion me renvois une erreur après une autentification réussie, même en apportant les modifications à sesman.ini décrites plus haut : | ||
+ | </note> | ||
+ | <note>meme erreur depuis Ubuntu v16.04 (client RDP Remmina) vers ubuntu 15.04 | ||
+ | </note> | ||
+ | <note>Il semble que les bureaux Unity et Gnome ne soient pas compatibles avec xrdp. | ||
+ | Mais cela fonctionne en installant xfce4 : <code>sudo apt-get install xfce4</code> | ||
+ | Il faut ensuite indiquer à Ubuntu que c'est le bureau xfce qui doit être utilisé : <code>echo xfce4-session >~/.xsession</code> | ||
+ | Ensuite redémarrer xrdp : <code>sudo /etc/init.d/xrdp restart</code> | ||
+ | NB: Et **il faut conserver le fichier /etc/xrdp/sesman.ini d'origine**. | ||
+ | Testé avec Ubuntu 16.04 depuis un Windows 7. | ||
+ | </note> | ||
+ | ===== Utilisation en mode client ===== | ||
+ | Installer **rdesktop**. | ||
+ | |||
+ | Exemple de commande: | ||
+ | rdesktop -u <REMOTE USER> 111.222.333.444 -p <PASSWORD> -f -k fr -5 -K -r clipboard:PRIMARYCLIPBOARD | ||
- | ===== Voir aussi ===== | + | ===== Désinstallation ===== |
+ | Et si vous voulez désinstaller xrdp | ||
+ | tapez: | ||
+ | apt-get remove xrdp | ||
+ | ===== Pour en savoir plus ===== | ||
* [[http://xrdp.sourceforge.net/|(en) XRDP chez sourceforge.]] | * [[http://xrdp.sourceforge.net/|(en) XRDP chez sourceforge.]] | ||
* [[:vnc|VNC (Virtual Network Computing)]] sur la documentation ubuntu-fr. | * [[:vnc|VNC (Virtual Network Computing)]] sur la documentation ubuntu-fr. | ||
- | * [[http://planet.ubuntu-fr.org/post/2007/06/04/Connexion-a-Ubuntu-Linux-a-partir-de-windows-:-xrdp|Le tuto de juin 2007]] sur planet ubuntu-fr, qui présente bien l'aspect théorique. | + | * [[https://forum.ubuntu-fr.org/viewtopic.php?id=372863|RDP sur un serveur ubuntu ?]] sur le forum ubuntu-fr. |
- | * [[http://forum.ubuntu-fr.org/viewtopic.php?id=372863|RDP sur un serveur ubuntu ?]] sur le forum ubuntu-fr. | + | |
---- | ---- | ||
- | //Contributeurs principaux : legaub.// | + | //Contributeurs principaux : [[http://patin.gaubert.free.fr/fiches/fiche16.html|legaub]]// |