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 07/02/2010, 18:48] 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_leger tutoriel EN_CHANTIER}} | + | <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]]. | ||
Ligne 7: | Ligne 10: | ||
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. | ||
- | ===== Pré Requis ===== | + | 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. |
- | 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. | + | 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, on y trouve bien sûr VNC. | ||
+ | * appelle PAM pour l'authentification. | ||
+ | * 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. | ||
- | Si le blabla ne vous intéresse pas, rendez-vous [[:xrdp#Noblabla|ici]]. | + | ===== Prérequis ===== |
- | ===== 1. Structure générale ===== | + | Installer vnc4server - Virtual network computing server software, ça fonctionne tel quel donc pas de configuration à modifier. |
- | 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. | + | Si Vino est déjà installé et actif il n'y aura pas de conflit. Il peut donc être ignoré. |
- | Entre les deux, se glisse un gestionnaire de session dénommé sesman, qui : | + | ===== Installation ===== |
- | * donne le choix lors de 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. | + | |
- | ===== 2. Installer et (re)découvrir VNC ===== | + | [[:tutoriel:comment_installer_un_paquet|Installez le paquet]] **[[apt>xrdp]]**. |
- | 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 [[:vnc|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. | + | <note>sur 14.04 Trusty server,tout fonctionne sans aucun paramétrage supplémentaire... Certe la fenêtre texte est un peu petite! </note> |
- | 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). | + | ===== Configuration ===== |
- | 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. | + | === Configuration de sesman === |
- | === 2.1. Sur le serveur === | + | [[:tutoriel:comment_modifier_un_fichier|Ouvrez le fichier]] **/etc/xrdp/sesman.ini**. |
- | <code>user0@serveur:$~ sudo apt-get install vnc4server</code> | + | Pour l'instant, rien ne fonctionne, car la section [Xvnc] ne contient que les quatre arguments : |
- | installe le paquet vnc4server qui permet la création des machines virtuelles. Créons notre première machine, numérotée 14 (Pourquoi ? Parce que) : | + | <code> |
+ | 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 */ | ||
+ | param3=-nolisten | ||
+ | param4=tcp | ||
+ | </code> | ||
- | <code>user0@serveur:$~ vncserver :14</code> | + | Il faut compléter cette section, de la manière suivante: |
- | 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". | + | <code> |
+ | param3=-fp /* ces quatre paramètres corrigent le bug #78282 du paquet vnc4server */ | ||
+ | param4=/usr/share/fonts/X11/misc | ||
+ | param5=-extension | ||
+ | param6=XFIXES</code> | ||
- | L'examen de /home/user0/.vnc/serveur:14.log, montre les erreurs suivantes : | + | Personnellement, j'y ai aussi ajouté : |
- | * l'absence du fichier /etc/X11/xserver/SecurityPolicy. **Solution :** Créer le répertoire /etc/X11/xserver/ et y recopier 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 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> |
+ | param7=-depth /* pour forcer la profondeur de couleur */ | ||
+ | param8=16 | ||
+ | param9=-localhost /* pour contraindre la connexion via xrdp */ | ||
+ | </code> | ||
+ | |||
+ | 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.) | ||
+ | |||
+ | === Menu de connexion === | ||
- | <code>user0@serveur:$~ vncserver :14 -fp /usr/share/fonts/X11/misc -extension XFIXES</code> | + | [[:tutoriel:comment_modifier_un_fichier|Ouvrez le fichier]] **/etc/xrdp/xrdp.ini**. |
- | Désormais, le log ne fait plus mention d'aucune erreur. Mais si l'on se connecte à la machine ainsi créée, on est déçu : pas d'environnement graphique, un fond grisâtre et une pauvre console. Il faut maintenant utiliser votre éditeur préféré pour modifier le fichier /home/user0/.vnc/xstartup en sorte qu'il ressemble à ceci : | + | Conserver simplement les sections [globals] et [xrdp1] que l'on renomme pour le fun : |
- | <code>#!/bin/sh | + | <code>[globals] |
- | # Uncomment the following two lines for normal desktop: | + | bitmap_cache=yes |
- | unset SESSION_MANAGER | + | bitmap_compression=yes |
- | exec sh /etc/X11/xinit/xinitrc | + | port=3389 |
- | #[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup /* Ce répertoire n'existe pas ou plus */ | + | crypt_level=low |
- | [ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources | + | channel_code=1 |
- | #xsetroot -solid grey /* Joli fond d'écran gris */ | + | |
- | #vncconfig -iconic & /* Fait apparaître vncconfig sous forme de case à cocher en fond d'écran */ | + | [xrdp1] |
- | #xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" & /* Terminal tout pourri */ | + | name=legaub vous invite sur un serveur Ubuntu |
- | #twm & /* twm est un ancien gestionnaire de fenêtre, très rudimentaire */ | + | lib=libvnc.so |
+ | username=ask | ||
+ | password=ask | ||
+ | ip=127.0.0.1 | ||
+ | port=-1 | ||
</code> | </code> | ||
- | Il faut ensuite rendre ce fichier exécutable en lui donnant les droits 755 (s'il ne les as pas déjà). | ||
- | Désespoir, l'examen de /home/user0/.vnc/serveur:14.log montre l'erreur suivante : | + | Redémarrer avec : |
- | * Permission denied pour /etc/X11/xinit/xinitrc. **Solution :** Le rendre exécutable en lui donnant les droits 755. | + | |
- | À présent, tout doit marcher convenablement. Dernière commande, pour tuer la machine créée : | + | <code>sudo /etc/init.d/xrdp restart</code> |
- | <code>user0@serveur:$~ vncserver -kill :14</code> | + | Vous pouvez désormais vous connecter à votre serveur en utilisant le protocole RDP<sup>®</sup>. |
- | === 2.2. Sur le client === | + | === 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. | ||
- | <code>user0@client:$~ vncviewer serveur:14</code> | + | ===== Problème de configuration ===== |
- | 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 : | + | Une difficulté surgit si l'on veut passer, par exemple -DisconnectClients=0 ou -NerverShared=1. En effet, impossible de glisser le signe "=" nulle part. |
- | <code>user1@client:$~ vncviewer serveur:14</code> | + | [[:tutoriel:comment_modifier_un_fichier|Ouvrez le fichier]] **/etc/xrdp/startwm.sh**. |
- | accède aussi à la machine virtuelle serveur:14, sous réserve de renseigner correctement le mot de passe. On peut enfin tenter : | + | Ajouter les lignes suivantes : |
- | <code>user0@client:$~ vncviewer serveur:0</code> | + | <code>vncconfig -set NeverShared=1 |
+ | vncconfig -set DisconnectClients=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. | + | 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. Rajouter la couche XRDP ===== | + | <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**. | ||
- | =====Noblabla===== | + | 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 : [[:utilisateurs:legaub|legaub]].// | + | //Contributeurs principaux : [[http://patin.gaubert.free.fr/fiches/fiche16.html|legaub]]// |