Du TERMINAL SERVER (ou autre) sous LINUX ? v2.0

Du TERMINAL SERVER (ou autre) sous LINUX ? v2.0 - réseaux et sécurité - Linux et OS Alternatifs

Marsh Posté le 16-01-2010 à 12:45:32    

Bonjour à vous,
 
je me permet de déterrer à nouveau ce sujet qui a été fermé http://forum.hardware.fr/hfr/OSAlt [...] 6600_1.htm, qui soulève bien mon problème, mais n'y répond malheureusement pas.
 
Je dispose d'une tripotée de client léger wyse sur lesquels se trouvent seulement implémenté RDP et ICA. Je ne peux absolument pas les modifier en y installant d'autres protocoles (ce serait trop simple !) Je cherche une solution pour que ces terminaux puissent se connecter sur un serveur ubuntu. J'ai bien trouvé le projet xrdp (http://xrdp.sourceforge.net/), mais il n'est pas trop soutenu.
 
Avez-vous trouvé une solution satisfaisante ? Merci de vos réponses éventuelles.

Reply

Marsh Posté le 16-01-2010 à 12:45:32   

Reply

Marsh Posté le 16-01-2010 à 14:18:21    

Reply

Marsh Posté le 16-01-2010 à 14:30:54    

Merci de ta réponse,
 
je dois avoir quelques problèmes en anglais, car dans ce que je lis ici : https://help.ubuntu.com/community/U [...] ickInstall, je ne vois aucune trace des protocoles RDP ou ICA. Est-ce que je me trompe ?

Reply

Marsh Posté le 16-01-2010 à 19:12:05    

RDP étant un protocol fermé de chez Microsoft, tu ne trouvera aucune implémentation serveur de RDP fonctionnant sous Linux (seul le client existe)
 
Pour ICA, je sais qu'un client ICA existe pour Linux, mais toute la partie serveur j'en doute ...

Reply

Marsh Posté le 17-01-2010 à 11:44:52    

Merci de ta réponse, mais en fait, il existe bien une couche qui s'appelle xrdp qui est serveur RDP / client VNC à mettre sur le serveur ubuntu.
 
Malheureusement :cry:, je tourne depuis un moment entre fora, wiki, howto et autres tuto, mais je ne trouve pas de description intellectuellement propre du fonctionnement de celui-ci. Je n'arrive pas à faire marcher convenablement ce xrdp, mais je sais que très bientôt, je vais être sollicité (probablement assez violemment " :pfff: " ), si ça ne marche pas.
 
Et je sais aussi que je ne parviendrais pas à le faire fonctionner si je ne le comprends pas ... :pt1cable:  
 
C'est donc un appel à l'aide ... HELP  :(  

Reply

Marsh Posté le 17-01-2010 à 15:27:53    

Salut, je viens de tester xrdp (que je découvre grace à ton message), ça compile et s'installe sans problème sur ma Mandriva 2010.0 64 bits...
 
Résultat: je peux me connecter graphiquement à mon serveur Linux via rdesktop (drole d'idée mais bon, ça marche ...)
 
Quel est ton problème au juste ? Je n'ai rencontré aucune difficulté pour le faire fonctionner en moins de 10 minutes ...


Message édité par [Albator] le 17-01-2010 à 15:29:32
Reply

Marsh Posté le 17-01-2010 à 16:00:30    

Salut, merci de t'intéresser à mon problème,
 
eh bien en fait, il y en a plusieurs :
 
1. comme je suis un peu noob  :p sur les bords, je n'ai jamais compilé quoi que ce soit.
2. en l'installant à partir des dépôts ubuntu, le mieux que j'ai obtenu, c'est une console grisâtre :cry: sur les clients wyse, pas "déport d'affichage". J'ai modifié quelques fichiers, mais je ne sais plus lesquels ... rigueur quand tu nous tiens !
3. si je me sers de la version fournie par un certain JJL (http://planet.ubuntu-fr.org/post/2 [...] ows-:-xrdp), je n'arrive pas à le lancer au démarrage de la machine, pas très grave pour un serveur.
4. toujours avec cette version, le bureau affiché n'est ni gnome ni kde, mais un hybride entre les deux ... pourquoi ? Et les messages au lancement sont en allemand ! Ach :??: .
5. Il y aurait des problèmes de claviers, de polices de caractères, bref, plein de trucs pas clair et pas du tout documentés. Et vnc, qu'il faudrait installer au préalable, serait buggé.
6. Les clients wyse ne supportent que 8 et 16 bpp ... qu'est-ce que je modifie pour que ça tourne :pt1cable: ?
7. Enfin, j'aimerais bien comprendre comment tout ça fonctionne, sans franchement rentrer dans les détails, j'ai perdu une éternité en programmation et en informatique, je suis tout sec :(  :(  :( , mais comprendre. Et savoir à quoi ça correspond quand je modifie un fichier. Pour écrire un protocole de mise en place si jamais je m'en sors.
 
Mais, aussi, je me noie peut-être dans un verre d'eau ! Bref, je me prends la tête :sweat: .

Reply

Marsh Posté le 17-01-2010 à 16:08:49    

Ah oui, aussi,
 
c'est vrai que c'est une drôle d'idée, mais je travaille dans un collège où nous vivons sous la coupe du tout microsoft depuis (trop) longtemps. Aussi les thinclients dont nous disposons n'ont que RDP (ou ICA) dessus.
 
Mais je fais le forcing pour passer du bon côté de la force, et j'essaye de transformer un de nos serveurs qui était sous 2003 en serveur libre. Et dans l'absolu, j'aimerais que l'utilisateur lambda ne s'en rende pas compte, en mettant un thème genre "vista" sur le gnome du serveur. Mais ça, ce serait pour le fun.
 
Et enfin, leur annoncer, que depuis 6 mois, il font du linux sans le savoir :lol: . La résistance au changement, c'est colossal.

Reply

Marsh Posté le 17-01-2010 à 18:25:51    

Bon déja, si le package proposé dans ubuntu (ou sur un autre site quelconque...) n'est pas la dernière version 0.4.1, laisse tomber, et prend la version officiel du site.
L'article de JJL est daté de 2007, c'est énorme dans le monde Linux ! Ca fait au moins 4 versions de retard de Ubuntu !
 
Je viens de tester sur une VM en Ubuntu 9.10 ...
 

$ sudo apt-get install xrdp


 
Je me retrouve bien avec la version 0.4.1 , donc tout va bien .
Et en plus, il démarre tout seul avec Ubuntu, rien à faire de ce coté là donc !
 
J'ai constaté 2 problèmes avec cette configuration Ubuntu:
Pour les résoudre, édite le fichier /etc/xrdp/sesman.ini

$ sudo vi /etc/xrdp/sesman.ini


1) il y a un bug de lancement du "UserWindowManager". Comme il n'est pas indispensable, on le désactive:
 
Au début du fichier, dans la section [Globals], tu modifies la ligne suivante et tu mets la valeur 0 au lieu de 1:

EnableUserWindowManager=0


 
2) un problème avec Xvnc (que je n'ai pas eu sur mandriva), impose qu'il faut rajouter des paramètres à passer à Xvnc.
 
A la fin du fichier, dans la rubrique [Xvnc], tu ajoutes les lignes après les existantes:

param3=-depth
param4=16
param5=-pn
param6=-extension
param7=XFIXES
param8=-localhost

Enregistre les modifs.
param3 et param4, c'est pour forcer la profondeur de couleurs 16 bits (tu peux aussi mettre 8 ou 15).
param5 param6 et param7, c'est  copier/coller de la configuration du script "vncserver" de ubuntu. Sans ça, Gnome ne marche pas sous VNC :D
param8 permet que les sessions VNC ne soient accessibles que par le serveur sur lequel VNC (et donc XRDP) tourne, ça évitera que qqn se connecte à une session VNC sans passer par XRDP..
 
 
Et pour finir, tu peux customiser les sessions visibles sur la mire de connexion XRDP.
Dans mon cas (et sans doute le tien aussi), la seule session qui m'intéresse est "sesman-Xvnc" (la première de la liste).
Le paramétrage est dans /etc/xrdp/xrdp.ini .
 

$ sudo vi /etc/xrdp/xrdp.ini


Je vire toutes les sections sauf [globals] et [xrdp1].
Je renomme la session [xrdp1], par exemple, "Serveur Linux".
Mon fichier ressemble donc à ça:
 

[globals]
bitmap_cache=yes
bitmap_compression=yes
port=3389
crypt_level=low
channel_code=1
 
[xrdp1]
name=Serveur Linux
lib=libvnc.so
username=ask
password=ask
ip=127.0.0.1
port=-1

Enregistre les modifs.
Et voila, mon serveur RDP sous Ubuntu 9.10 est entièrement fonctionnel !


Message édité par [Albator] le 17-01-2010 à 18:34:12
Reply

Marsh Posté le 18-01-2010 à 10:17:33    

Merci de prendre le temps de te pencher sur mon problème, c'est super,
 
j'essaie immédiatement, et je te tiens au courant.
 
a+
 
 

Reply

Marsh Posté le 18-01-2010 à 10:17:33   

Reply

Marsh Posté le 18-01-2010 à 12:25:29    

Bon, alors, je ne sais pas comment te remercier à la hauteur. ÇA MARCHE. Tout ce que j'avais trouvé jusque là ne servait rien. J'ai installé xtightvncviewer en plus, mais je ne suis même pas sûr que ce soit nécessaire). Penses-tu que je peux supprimer startwm.sh aussi ?
 
Y a encore deux trois bêtise à ajuster (genre le son) mais l'essentiel fonctionne, y compris sur des client léger d'un autre temps.
 
De toute évidence, tu as su immédiatement où intervenir car tu comprenais ce que tu faisais. Je t'en remercie vraiment, car je ne pense pas que j'aurais pu m'en sortir seul.
 
À l'occasion, si tu as quelques liens pour me faire progresser (notamment sur Xvnc, je suis hyper preneur).
 
[Albator], de tout coeur, MERCI.


Message édité par legaub le 18-01-2010 à 12:28:40
Reply

Marsh Posté le 18-01-2010 à 20:41:24    

Salut,
 
tu peux dégager xtightvncviewer , il te sert à rien


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 19-01-2010 à 09:27:33    

Ok, j'essaie de suite ....

Reply

Marsh Posté le 19-01-2010 à 09:30:51    

legaub a écrit :

Ok, j'essaie de suite ....


 
Exact. Merci.

Reply

Marsh Posté le 30-01-2010 à 14:51:39    

Bonjour à tous, merci de me lire,
 
alors, j'ai pas mal progressé et ça marche drôlement bien, je suis ravi. Toutefois, je bute sur un petit problème de syntaxe. Je voudrais passer la commande suivante :
 
vncserver :1 -bs -ac -depth 16 -pn -extension XFIXES -localhost -fp /usr/share/fonts/X11/misc -DisconnectClients=0 -NeverShared=1
Malheureusement, je ne trouve pas comment le faire passer correctement à partir de sesman.ini. En effet, ceci :
 
param1=-bs
param2=-ac
param3=-depth
param4=16
param5=-pn
param6=-extension
param7=XFIXES
param8=-localhost
param9=-fp
param10=/usr/share/fonts/X11/misc

param11=-DisconnectClients
param12=0
param13=-NeverShared
param14=1

 
ou bien
 
param11=-DisconnectClients
param12==0
param13=-NeverShared
param14==1

 
ou encore
 
param11=-DisconnectClients=
param12=0
param13=-NeverShared=
param14=1

 
ou enfin
 
-DisconnectClients=0
-NeverShared=1

 
ne marchent pas.
 
Quelle est donc la syntaxe correcte ? Merci de votre aide.


Message édité par legaub le 30-01-2010 à 14:55:06
Reply

Marsh Posté le 31-01-2010 à 02:42:45    

tres interessant ce topic, je vais essayer le xrdp moi aussi.
un interet : le client est integre a toutes les versions de windows :)

Reply

Marsh Posté le 31-01-2010 à 14:38:48    

Ben oui, c'est vraiment super ...
 
Tu peux pas m'aiguiller pour mon histoire de syntaxe ? j'ai essayé == et %= et ça marche toujours pô.

Reply

Marsh Posté le 31-01-2010 à 15:18:38    

Apparemment, il est impossible d'utiliser le caractère = (égal) dans les paramètres du sesman.ini (probablement un bug).
 
Les paramètres que tu souhaites placer sont toutefois utilisables directement dans une session vnc avec la commande vncconfig .
 
Il te suffit donc de modifier ton script de démarrage /etc/xrdp/startwm.sh et d'ajouter les lignes:

vncconfig -set DisconnectClients=0  
vncconfig -set NeverShared=1


Ce qui donne, par exemple:

#!/bin/sh
 
if [ -r /etc/default/locale ]; then
  . /etc/default/locale
  export LANG LANGUAGE
fi
 
vncconfig -set DisconnectClients=0
vncconfig -set NeverShared=1
 
. /etc/X11/Xsession

Reply

Marsh Posté le 31-01-2010 à 18:41:45    

Salut [Albator],
 
merci de ta réponse, je suis convaincu que je n'ai même pas besoin de vérifier que ça marche : j'ai toute confiance.
 
J'étais arrivé sur ce problème du = sans savoir le résoudre. Et comme je n'avais pas de réponse, j'ai envoyé un mail à Jay Sorg, (l'administrateur du projet xrdp), j'espère qu'il ne me rira pas au nez. Peut-être conviendra-t-il qu'il s'agit d'un bug ?
 
En tout cas, merci à nouveau de ton aide. Tu t'en sers régulièrement de xrdp ?
 

Reply

Marsh Posté le 01-02-2010 à 07:03:20    

Bon, je confirme, ça marche à la perfection.
 
Encore merci [Albator].

Reply

Marsh Posté le 12-02-2010 à 12:27:04    

Bonjour ...
 
alors, je me suis enthousiasmé un peu trop vite.
 
La modif de startwm.sh se comporte comme on peut s'y attendre :

  • NeverShared=0 (Disconnect sans objet) --> Sessions jumelles
  • NeverShared=1 ET DisconnetClients=1 --> Une session chasse l'autre
  • NeverShared=1 ET DisconnetClients=0 --> Refus de toute nouvelle connexion. C'est cette dernière config que je souhaite mettre en place.

Mais UNIQUEMENT si l'on effectue les connexions depuis le MEME ordi.
 
Si j'effectue une nouvelle connexion depuis une autre machine avec le même utilisateur, celle-ci se fait sans problème. Mais FireFox (par exemple) lancé sur une première machine ne veut pas s'ouvrir sur l'autre (A FF session is already running .... ) Et quelle que soit la config de startwm.
J'ai essayé de tripoter quelques lignes dans sesman.ini et startwm.sh (j'ai changé l'ordre des paramètres), sans succès.
 
J'aimerais bien y voir clair. Merci par avance de votre aide.
 

Reply

Marsh Posté le 13-02-2010 à 14:41:31    

Salut,
 
bon, je confirme mes observations du post ci-dessus. Testées sur une autre config.
J'ai testé aussi un cran au dessous avec vncviewer, et tout fonctionne comme attendu sur deux machines différentes (à condition de passer l'argument - shared).
 
Il semblerait donc bien que le souci vienne d'un fichier de config de xrdp. C'est comme si startwm.sh n'était pas exécuté à partir de l'autre machine. Je vais me concentrer sur sesman.ini.
 
Je suis parti pour changer les paramètres un à un, mais je ne sais encore par lequel je vais commencer, j'hésite encore  :cry:  ...
 
...
5 heures plus tard : bon, je viens d'essayer 2^5 possibilités, et pas de progrès notables.
...


Message édité par legaub le 13-02-2010 à 20:52:37
Reply

Marsh Posté le 13-02-2010 à 20:55:39    

Re,
 
Je viens de me rendre compte que, bien que mes identifiants sont identiques sur les deux machines différentes, xrdp ouvre une nouvelle session (display:10 port 5910 sur la première / display:11 port 5911 sur la seconde). Il ne peut donc pas tenir compte des paramètres de partage ou de déconnexion pour une même session. Quant à FF, il identifie bien correctement l'utilisateur et le verrouille.  
 
Donc, nouvelle question : comment se fait l'identification par xrdp ?

Reply

Marsh Posté le 14-02-2010 à 15:02:59    

Salut, je sais pas si quelqu'un suit toujours, mais ça y est, j'ai compris.

 

Lors d'une requête d'un client :

Citation :

The username and password and client width, height and bpp are sent to sesman. Sesman then uses pam (pam_userpass) to authenticate the user. If the user is ok, sesman looks for a running session with the width, height, and bpp. If sesman find one, it returns the display its running on. If not, a new Xvnc is started with the users width, height and bpp.


Donc, si un même utilisateur fait plusieurs requêtes avec des valeurs différentes pour width, height et bpp, il aura une NOUVELLE session à chaque fois. C'est ce qui m'est arrivé. Les réglages de NeverShared et DisconnectClients sont sans effets.

 

J'ai essayé de forcer la geometry et le depth dans sesman.ini, ça marche : le client affiché est conforme à sesman. Mais comme le test s'effectue sur ce qui est demandé par le client, ça ne sert à rien.

 

Donc, nouvelle question : comment ignorer la geometry et le depth demandés par le client ?


Message édité par legaub le 17-02-2010 à 21:06:39
Reply

Marsh Posté le 14-02-2010 à 19:41:48    

Bonsoir,
 
bon, je crois que je vais lâcher le morceau ici. De toutes façons, comme il s'agit de se connecter depuis des clients légers, il n'est pas évident d'aller changer les paramètres par défaut.
 
J'ai essayé de synthétiser tout ça ici : http://doc.ubuntu-fr.org/xrdp
 
Et plus en détail là : http://perso.nordnet.fr/stephane.p [...] che16.html
 
Merci à tous, a+.

Reply

Marsh Posté le 17-02-2010 à 21:11:49    

Bonsoir  :hello:,
 
Euh , désolé de vous déranger  :ange: , mais en fait, ce problème continue de me turlipiner (si j'ose dire). Je n'ai pas vraiment :non: envie de lâcher le morceau contrairement à ce que j'ai écrit au dessus.
 
D'après ce que j'ai vu, il va falloir que je tripote les fichiers sources de sesman, qui apparemment sont écrit en C  :ouch:.
 
Auriez-vous éventuellement quelques liens ou conseils ... ?
 
Merci de m'aider.

Reply

Marsh Posté le 17-02-2010 à 22:45:28    

Testé sur Ubuntu 9.10 32 bits ...
 
<!> Attention les commandes ont été tapées de tête, fautes de frappes possibles ! Vérifie au fur et à mesure !
 
Récupère les packages sources de xrdp modifiés pour Ubuntu depuis cette page:
http://packages.ubuntu.com/source/karmic/xrdp
Fichiers: xrdp_0.4.1~dfsg.orig.tar.gz et xrdp_0.4.1~dfsg-2.diff.gz
 
Installe les paquets requis pour compiler XRDP sur Ubuntu (ils sont indiquées sur la page du package) :

$ sudo apt-get install debhelper libssl-dev libpam0g-dev dpatch sharutils


Décompresse les sources de XRDP, et applique le patch fourni par ubuntu (je ne sais pas trop ce qu'il apporte):

$ tar xfz xrdp_0.4.1~dfsg.orig.tar.gz
$ zcat xrdp_0.4.1~dfsg-2.diff.gz | patch -p0


Crée le fichier "legaub.patch" (voir plus loin) qui corrige ton problème, et applique le aux sources déja patchées par ubuntu:  

$ patch -p0 legaub.patch

Remarque: ce patch supprime la vérification de la résolution graphique de la session, et il corrige au passage le problème du caractère "=" qui ne marche pas sur les lignes de paramètre XVNC dans sesman.ini ! (voir plus loin)
 
Compile le bouzin ... (je suppose que le compilateur gcc tout le bazar sont déja installés)

$ cd xrdp_0.4.1~dfsg
$ make


Si ça sort sans erreur, tu peux installer ton nouveau sesman !
 
Stoppe le service xrdp qui tourne actuellement ...

$ sudo /etc/init.d/xrdp stop


Installe le nouveau "sesman" et sa librairie "libscp.so" (à priori celle-ci n'existait pas dans le paquet ubuntu, mais j'ai pas le temps d'investiguer la raison de sa présence) :

$ sudo mv /usr/bin/sesman /usr/bin/sesman.ORI
$ sudo cp sesman/sesman /usr/bin
$ sudo cp sesman/libscp/libscp.so /usr/lib
$ sudo ldconfig


Remet ton fichier "startwm.sh" d'origine (vire les lignes vncconfig que tu as rajoutées), et ajoute les paramètres de VNC directement dans /etc/xrdp/sesman.ini puisque le bug du "=" est corrigé .
Par exemple:

param11=-DisconnectClients=0
param12=-NeverShared=1


Redémarre XRDP:  

$ sudo /etc/init.d/xrdp start


Je ne sais pas trop pourquoi il affiche plein de message au démarrage, mais ça semble marcher comme ça ...  
 
Teste et vois si ça résoud tes problèmes :)
 
Remarque: Je ne connais pas grand chose au packaging Ubuntu, peut-être qu'un connaisseur saurait comment reconstruire le paquet .deb installable plutot que d'installer le sesmain patché à la main .
 
---
 
Annexe:  
Mon fichier patch: copie/colle le texte dans un fichier texte que tu appelles "legaub.patch":

diff -cr xrdp-0.4.1~dfsg/common/file.c xrdp-0.4.1~dfsg-PATCHED/common/file.c
*** xrdp-0.4.1~dfsg/common/file.c    2009-09-26 17:14:17.000000000 +0200
--- xrdp-0.4.1~dfsg-PATCHED/common/file.c    2010-02-17 22:05:36.827069884 +0100
***************
*** 171,177 ****
    len = g_strlen(text);
    for (i = 0; i < len; i++)
    {
!     if (text[i] == '=')
      {
        on_to = 1;
      }
--- 171,177 ----
    len = g_strlen(text);
    for (i = 0; i < len; i++)
    {
!     if (text[i] == '=' && on_to == 0)
      {
        on_to = 1;
      }
diff -cr xrdp-0.4.1~dfsg/sesman/session.c xrdp-0.4.1~dfsg-PATCHED/sesman/session.c
*** xrdp-0.4.1~dfsg/sesman/session.c    2010-02-17 22:02:38.773069998 +0100
--- xrdp-0.4.1~dfsg-PATCHED/sesman/session.c    2010-02-17 22:05:04.998070037 +0100
***************
*** 48,57 ****
   
    while (tmp != 0)
    {
!     if (g_strncmp(name, tmp->item->name, 255) == 0 &&
!         tmp->item->width == width &&
!         tmp->item->height == height &&
!         tmp->item->bpp == bpp)
      {
        /*THREAD-FIX release chain lock */
        lock_chain_release();
--- 48,54 ----
   
    while (tmp != 0)
    {
!     if (g_strncmp(name, tmp->item->name, 255) == 0 )
      {
        /*THREAD-FIX release chain lock */
        lock_chain_release();


Message édité par [Albator] le 17-02-2010 à 22:47:45
Reply

Marsh Posté le 18-02-2010 à 10:03:09    

Bonjour [Albator] :jap: ,
 
si tu ouvres un dictionnaire et que tu cherches le mot "GRATITUDE", tu y trouveras ma photo :) .
 
Je te remercie donc bien bas :jap: à nouveau. Tu m'offres une "solution clé en main", qui va me demander du temps de compréhension, mais qu'importe, je suis ravi et ne sais comment te remercier à la hauteur.
 
Je poste évidemment mes compte-rendus ici-même.

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed