Table des matières

Accès à distance graphique multi-utilisateur par FreeNX

Problème à résoudre

Accéder à distance (réseau local ou internet) à une machine linux, à partir d'une machine cliente windows ou linux, par un accès graphique (bureau), sécurisé SSH, en utilisant FreeNX.

Le serveur FreeNX est la version libre du serveur “nxserver” de nomachine (http://www.nomachine.com ). Elle fait partie du package Suse jusqu'en version 11.2 http://software.opensuse.org/search?q=freenx&baseproject=openSUSE%3A11.2&lang=fr&exclude_filter=home%3A&exclude_debug=true.

Comme pour vnc lané par xinetd, cette liaison permet d'accéder à un compte existant sur la machine linux, et de la piloter en mode graphique (kde ou gnome) comme si on était devant.

Comme linux est multi-utilisateurs (contrairement à windows), plusieurs personnes peuvent accéder à la même machine linux et y travailler en même temps. De même, un seul utilisateur peut ouvrir plusieurs sessions de son compte en même temps.

Bien entendu, comme pour vnc, les jeux et applications qui demandent l'accélération 3D de la carte graphique nécessitent qu'on soit devant la machine serveur!

FreeNX est vraiment très rapide (plus rapide que vnc) et malgré tout sécurisé par ssh. Il contient plusieurs niveaux de compression qui permettent de s'adapter au mieux àdes debits de lignes très différentes, y compris en passant par internet. Le son peut etre transmis par “esound”. Le copier/coller fonctionne dans le sens serveur → client.

Comme mon pc linux est à la cave, j'utilise freenx le plus souvent possible!

Références documentaires

Mode opératoire

Installation du serveur FreeNX sur machine linux

Sur la suse, il suffit d'installer le package rpm “freenx”.

En principe, les relations de dépendance entrainent l'installation d'openssh qui est nécessaire à son exécution.

La doc de freenx se trouve ici: /usr/share/doc/packages/FreeNX.

Il faut ensuite initialiser le service par (en console sous root):

# nxsetup --install --clean --purge --setup-nomachine-key  

Après cela, nxserver apparait dans les processus actifs dans:

Le fichier de configuration du serveur nx est “/etc/nxserver/node.conf”, mais je n'ai pas eu à le modifier (sauf pour activer le fichier .log).

Au démarrage de la machine linux qui portera le nxserver, vous n'avez pas besoin d'aller plus loin que la page de login si vous n'avez pas besoin de travailler physiquement devant son écran.

Trace de fonctionnement (fichiers .log)

Si vous voulez tracer la communication, il faut activer le fichier log dans le fichier de configuration /etc/nxserver/node.conf:

Ouverture du parefeu sur le serveur nx

Si pour accéder au serveur nx, il faut traverser un parefeu, il faut ouvrir certains ports.

Dans tous les cas, il faut ouvrir le port 22 TCP, nécessaire à SSH, actif en début de session pour les mécanismes d'autorisation.

Pour le reste, tout dépend de la configuration du client nx:

Mais en fait, le problème est simple:

Installation du client nx sur pc Windows

Il faut télécharger le “client nx” windows. Attention: le client doit avoir la même version que le NX (=le proxy) du serveur.chercher “nxclient-*.*.*-*.exe” avec google.

Sur la page correspondant au lien de nomachine, demandez les instructions d'installation: c'est très bien fait.

Et installez comme précisé.

Installation du client nx sur machine linux

Pour la suse, il s'agit du rpm: freenx-client-0.9-71.4.x86_64.rpm ou freenx-client-0.9-71.4.i586.rpm selon votre plateforme

Pour installer, utilisez yast. Si vous avez une version de suse dont le yast refuse d'installer un paquet isolé, il faut faire l'installation en console. Placez le rpm quelque part (dans /ressources/rpmsup/nxclient ou /usr/local/nxclient par exemple). Ouvrez une console sous root et placez vous dans ce répertoire. Faites alors:

# rpm -ivh freenx-client-0.9-71.4.x86_64.rpm

Configuration des clients nx de nomachine (windows ou linux):

En double-cliquant sur l'icone NX (qui devrait être sur votre bureau), il apparait une petite fenètre

La “session”, c'est le nom de la session que vous voulez definir: donnez, par exemple, le nom du compte linux (“tyrtamos” pour moi).

Entrez les login et password du compte linux en question

Cliquez sur le bouton “configure” → create → il apparait une fenètre de configuration avec plusieurs onglets:

Onglet “General”:

Onglet “Advanced”

Onglet “Services”

Onglet “Environnement”

Vous faites “save” et vous cliquez sur “login” pour lancer la connection

Autorisation à la 1ère connexion

A la 1ére connexion, le client nx donne un message d'alerte: il dit qu'il n'est pas absolument sur que la machine à laquelle il accède est bien celle que vous voulez, et il vous affiche le “fingerprint” (une clé de 16 octets) de la machine en question pour vous permettre de le vérifier:

The authenticity of host 'xxx.xxx.xxx.xxx' (xxx.xxx.xxx.xxx)' can't be established.
RSA key fingerprint is xx.xx.xx. .... xx.xx.
Are you sure you want to continue connecting (yes/no)?  

Si vous répondez “yes”, le programme répond:

Warning: Permanently added 'xxx.xxx.xxx.xxx' (RSA) to the list of known hosts 

et demande le mot de passe du login.

A partir de ce moment, la machine cliente nx (windows ou linux) conservera dans le fichier “known_hosts” les données concernant la machine serveur nx et saura la reconnaître la prochaine fois sans vous reposer la question. Sur une machine cliente nx “windows”, ce fichier est: C:\Documents and Settings\votrelogin\.ssh\known_hosts. Sur une machine cliente nx “linux”, ce fichier est: /home/jeanpaul/.ssh/known_hosts. Dans ce fichier se trouve la liste des machines serveur nx reconnues, avec une longue ligne par machine telle que:

192.168.0.200 ssh-rsa AAAAB3NzaC1yc2EAAA......ABIwAA=  

Vous pouvez d'ailleurs effacer la ligne, et, à la prochaine session, le client nx vous redemandera si la machine qu'il a trouvée est bien celle que vous voulez.

C'est normal: pour lutter contre les tentatives d'usurpation d'adresse, il faudrait procéder avant à un tranport de clés du serveur nx au client nx pour que cette reconnaissance soit certaine. Si vous êtes méfiant, vous pouvez vous donner le moyen de vérifier si c'est la bonne machine gràce à son “fingerprint” que vous devez connaître avant la 1ère connexion. Sur le serveur nx, placez-vous en console sous root dans le répertoire /etc/ssh qui contient les clés.

Lancez (le paramètre est un “L” minuscule):

# ssh-keygen -l  

le programme demande de quelle clé vous voulez le fingerprint. Répondez:

# ssh_host_rsa_key.pub  

Le programme vous donne alors le fingerprint de la clé en question. Quelque chose comme:

# 1024 d7:57:d2:5a:94:2c:49:6b:45:d0:1c:0d:fd:ac:08:95  

Prenez note de ce fingerprint, et vérifiez lors de la 1ère connexion que c'est bien cette valeur qui est présentée à votre approbation.

NB: selon la config de SSH, il est possible que ce soit le fingerprint de la clé dsa (ssh_host_dsa_key.pub) et non celle de rsa qui soit demandée.

Utilisation

Pour lancer la liaison NX, vous lancez l'icone “NX client” située sur le bureau (windows ou linux).

Vous choisissez le nom de session que vous voulez établir, et vous cliquez sur le bouton “login”.

Le protocole de connexion se déroule, et le bureau du compte demandé se retrouve sur l'écran de votre pc client nx.

Pour avoir la pleine accélération, je vous conseille de ne pas avoir de papier peint. Pour ma part, j'ai mis un écran bleu uni RGB (0,0,128).

Quand vous étes en plein écran, comment revenir à votre écran normal de la machine client?

Pour revenir à l'écran de la machine serveur, il suffit de réactiver la fenètre “NX” à partir de la barre des tàches.

Pour terminez la connexion

Alors que vous êtes sur votre machine cliente (windows ou linux) et que vous avez l'écran de votre machine serveur linux, vous demandez simplement le log-out au menu afin d'arréter proprement la session en cours.

Je vous déconseille de supprimer seulement la fenétre linux, parce que des morceaux de programme linux peuvent continuer à s'exécuter, qui pourraient géner lors d'une future re-connexion. Par exemple, firefox peut alors vous demander à la connection suivante de créer une autre session firefox, parce que la session habituelle est occupée. Le problème est que vous n'avez plus alors vos bookmarks. La seule solution est de supprimer firefox dans les processus en fonctionnement sous votre compte, et ça marche de nouveau.

Mais la vrai solution est: sortez proprement par log-out en ayant arrété avant toutes les applications!

Pour avoir le son

Pour avoir les fonctions “multimedia” (son et image), il faut cocher la case “multimedia” dans la configuration du client nx.

Pour avoir le son, il faut avoir installé le rpm “esound” et, dans chaque logiciel, rediriger le module de sortie du son sur “esound” (ou “esd”) et non sur “alsa”.

Curieusement, la notice de nomachine dit qu'on doit utiliser “esound” quand le nx client est windows, et “aRts” quand le nx client est linux. Ce n'est pas ce que je constate: même avec nx client linux, c'est esound qui marche et non aRts.

Par exemple sur xmms: préférences → plugin de sortie → esound et vous pouvez écouter la musique sur votre machine cliente nx (windows ou linux), en ayant les fichiers musicaux et le logiciel de lecture sur la machine serveur nx linux… Idem avec Amarok, Ã condition d'avoir le moteur xine et de le configurer avec esound.

Vous pouvez faire cela aussi avec la lecture vidéo.

Par exemple avec xine: page setup → onglet audio → pilote audio à utiliser = “esd”. Vous voyez ainsi, par exemple, un film (image et son) sur votre machine cliente nx (windows ou linux) avec les fichiers video et le lecteur video sur la machine serveur nx linux. Mais ca demande une liaison ethernet performante, sinon, c'est un peu saccadé! Chez moi, le son est bon, mais la video manque de fluidité (ou alors, il faut réduire la taille de la fenètre).

Si tout cela c'est possible, ce n'est pas forcément une bonne idée, parce que le flux prend une bonne partie de la bande passante du réseau, et cela rend les autres opérations beaucoup moins fluides.

En tout cas, je n'ai pas réussi à avoir les notifications musicales de KDE. Par contre, j'ai la “cloche”: mystère de l'informatique…

Copier-coller

Vous pourrez vérifier que le copier-coller fonctionne dans le sens “serveur nx” → “client nx”. Par contre, je n'ai pas réussi à le faire fonctionner dans l'autre sens.

Plus fort: avoir en même temps kde et gnome

Imaginez que vous ayez installé en mếme temps kde et gnome. C'est facile: quand vous avez kde (bureau par défaut), vous installez gnome avec yast (sélection de packages → gnome).

A partir de là, normalement, c'est à la page de login de connexion que vous pouvez choisir (en bas à gauche). Attention: il faut empécher avant le login automatique.

Conséquences sur freenx:

Fantastique, non?

Sincérement, je me demande comment linux est capable de faire cela sans se mélanger les pinceaux…

Et si ça ne marche pas?

Problème d'établissement de la connexion

En modernisant mon matériel windows, je viens de découvrir que freenx et nxclient-windows peuvent rencontrer des difficultés.

On cite sur le web 2 problèmes connus:

Si ca ne marche vraiment pas, revenez à VNC (avec ou sans SSH). Celui-ci est peut-être un peu moins rapide, mais il est plus tolérant avec les config.

Problème de clavier azerty.

Si vous n'avez qu'un clavier qwerty dans la connexion nx alors que vous avez le clavier azerty sur votre pc client ainsi que sur votre pc serveur, il y a une astuce qui marche chez moi:

AGENT_EXTRA_OPTIONS_X="-xkbdir /usr/share/X11/xkb"