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, 12:44] 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 peut fermer la session distante avec la commande : | ||
- | |||
- | <code>vncserver -kill :14</code> | ||
- | |||
- | Enfin, 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 numérotée :14 que nous avons créée sur la machine nommée "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 aussi 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 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> |
- | On peut aussi ajuster les autres paramètres à sa convenance (sections [Globals], [Security], etc. ...). 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 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]]// |