Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

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.1Sur 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**.
  
-Ahsurpriselors 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'​instantrien ne fonctionnecar 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=+
-  +
-. /​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.2Personnalisons 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]]//
  • xrdp.1265789726.txt.gz
  • Dernière modification: Le 18/04/2011, 14:41
  • (modification externe)