48 votes

Exécuter l'application sur la machine locale et afficher l'interface graphique sur l'écran distant.

Est-il possible d'exécuter une application sur mon bureau local mais d'afficher l'interface graphique sur mon ordinateur portable (X distant) ?

Je me demande s'il est possible d'émuler une configuration à deux moniteurs en utilisant deux machines distinctes connectées en lan.

J'ai installé synergy et je peux facilement contrôler mon ordinateur portable avec le clavier/souris de l'ordinateur de bureau, mais j'aimerais aussi simplement exécuter quelque chose sur l'ordinateur de bureau et afficher l'interface graphique sur l'écran de l'ordinateur portable.

D'après mon expérience limitée de X, je sais que je peux exécuter un programme sur une machine distante et utiliser l'écran de la première pour afficher la sortie, mais pas l'inverse.

Toute indication serait d'une grande utilité. Merci pour votre aide.

P.S. J'utilise XFCE 4.10 sur Ubuntu 12.10.

51voto

Paul Hänsch Points 3057

Variante A - Tirer X Windows vers un autre AFFICHAGE :

  1. Assurez-vous que le serveur X sur votre ordinateur portable commence à écouter les connexions tcp. Malheureusement, X11-Networking est désactivé par défaut dans la plupart des distributions. Puisque le Xserver est lancé par votre gestionnaire d'affichage (gdm, lightdm), cela doit être configuré à cet endroit :

    Quel que soit le gestionnaire d'affichage que vous utilisez, un fichier de configuration dans /etc/ contiendra probablement le paramètre XServer responsable. Exécuter grep -r 'nolisten tcp' /etc/ sur votre ordinateur portable pour trouver le fichier de configuration responsable et supprimer la partie où il est dit -nolisten tcp (pas la ligne entière, juste ce paramètre). Redémarrez X sur votre ordinateur portable.

    Votre ordinateur portable devrait maintenant avoir un écran fonctionnant sur le port tcp 6000 (essayez d'exécuter nmap -p6000 Laptop sur votre PC de bureau, si le port est signalé comme "ouvert", vous êtes arrivé jusqu'ici).

  2. Mettez votre écran X à la disposition de l'ordinateur de bureau. X11 utilise un mécanisme d'authentification pour accorder l'accès à un écran. Vous devez autoriser l'ordinateur de bureau à lancer Windows sur l'ordinateur portable. Normalement en échangeant un cookie d'affichage.

    Pour commencer, effectuez cette étape avec les mains sur votre ordinateur portable. Une fois que vous avez compris le concept avec le DISPLAY et tout le reste, vous pouvez le faire via ssh.

    Rapide et sale : Vous pouvez exécuter xhost +desktops.computers.ip.address sur votre ordinateur portable pour accorder un accès X à l'ordinateur de bureau. Notez que chaque utilisateur sur votre ordinateur portable peut utiliser l'affichage X de votre ordinateur portable de cette façon. Notez que cette méthode est suffisante pour installer un keylogger sur l'écran de votre ordinateur portable. N'utilisez cette méthode qu'à des fins de test.

    Correct et sûr : courir xauth extract cookie-file :0 sur votre ordinateur portable pour exporter votre secret d'accès à l'écran dans un "cookie-file". Transférez le cookie sur votre ordinateur de bureau. Exécutez xauth merge cookie-file . Ou en une seule étape (depuis votre bureau) ssh Laptop xauth extract - :0 |xauth merge - Remarque : si votre ordinateur portable et votre ordinateur de bureau partagent un répertoire personnel, par exemple via nfs, il n'est pas nécessaire d'échanger des informations d'identification. La base de données d'accréditation est le fichier .Xauthority dans votre répertoire personnel, et peut être partagée entre différentes machines.

  3. Exécutez le programme : Dans un terminal de votre PC de bureau, exécutez export DISPLAY=Your.Laptops.IP.Address:0 , exécuter n'importe quel programme X dans le même terminal. Il devrait apparaître sur l'écran de l'ordinateur portable.

Variante B - Utilisation de SSH avec une touche d'originalité.

SSH réalise le transfert X11 en transférant un socket X11 local (normalement un Unix Domain Socket) vers un socket TCP local sur la machine distante, puis en négociant le cookie d'affichage, et enfin en définissant le DISPLAY-Environment sur la machine distante. De cette façon, tout le trafic X11 est crypté sur le tunnel ssh. Le cas d'utilisation normal est de transmettre l'affichage local à la machine distante (c'est-à-dire permettre aux applications distantes d'afficher x Windows localement).

L'avantage d'utiliser ssh est que vous n'avez pas besoin de mettre votre serveur X en mode tcp listen (puisque le socket unix est utilisé). Et ssh s'occupe de l'échange d'informations d'identification.

  1. SSH à votre ordinateur portable depuis votre ordinateur de bureau (vous n'avez pas encore besoin d'utiliser -X).
  2. Dans le Shell distant, entrez export DISPLAY=:0 ceci rend l'affichage déjà en cours sur votre ordinateur portable disponible pour le Shell que vous avez obtenu via ssh. Si vous exécutez une commande X maintenant, elle apparaîtra déjà sur l'écran de votre notebook, mais s'exécutera toujours sur votre ordinateur portable (essayez pour être sûr).
  3. A partir de ce Shell ssh de retour sur votre ordinateur de bureau, utilisez -X cette fois. Vous avez maintenant un Shell sur la machine sur laquelle la session ssh a été ouverte, mais cette fois-ci avec un X fonctionnel.
  4. echo $DISPLAY vous montre la désignation, l'affichage de votre ordinateur portable X a maintenant sur votre ordinateur de bureau. C'est-à-dire :10 ou :11.
  5. Vous pouvez maintenant minimiser le terminal. Chaque fois que vous entrez export DISPLAY=:10 (voir quel numéro d'affichage vous avez obtenu) sur votre ordinateur de bureau maintenant, chaque programme que vous exécutez ensuite dans le même Shell apparaîtra sur l'écran de votre ordinateur portable.

    Cette variante est facile mais lente, car tout le trafic X11 est acheminé via SSH.

Variante C - Le concept original de thinclient :

Vous pouvez utiliser votre ordinateur portable pour ouvrir une session de bureau fonctionnant entièrement sur votre ordinateur de bureau.

  1. Configurez le gestionnaire d'affichage de votre bureau pour qu'il réponde aux diffusions XDMCP. La manière de procéder dépend de votre gestionnaire d'écran. Certains gestionnaires d'écran ne prennent pas du tout en charge cette fonction, comme par exemple le slim. XDM, KDM, WDM, GDM le supportent.

  2. Démarrez un X-Server sur votre ordinateur portable, qui demande le gestionnaire d'affichage de votre bureau. Soit un serveur X imbriqué : Xephyr :1 -query desktop o Xephyr :1 -broadcast Ou en arrêtant votre ordinateur portable X-Server et en entrant sur un terminal système sudo Xorg :0 -broadcast

    Le gestionnaire d'affichage veillera à ce que les informations d'identification soient générées, échangées et tout le reste. Félicitations, vous devriez maintenant voir une fenêtre de connexion fournie par votre ordinateur de bureau.

24voto

Laplie Points 2983

Vous pouvez utiliser la redirection ssh X pour atteindre votre objectif. Si vous êtes dans le même sous-réseau, c'est très rapide.

Installez le serveur et le client ssh sur votre ordinateur portable et votre ordinateur de bureau.

sudo apt-get install ssh

Pour se connecter au PC de bureau, ouvrez un terminal sur l'ordinateur portable et tapez ce qui suit

ssh -X username@desktop_pc_ip

Et vous pouvez lancer n'importe quel logiciel en utilisant le terminal, par exemple lancer Firefox, il suffit de taper firefox dans le terminal.

8voto

Nick Andrik Points 1956

Préparation

(vous ne le faites qu'une fois)

Dans votre bureau, installez le serveur SSH

sudo apt-get install openssh-server


Depuis votre ordinateur portable :

ssh -X nom d'utilisateur@desktop_pc_ip

Dans le terminal que vous obtenez, tout ce que vous exécutez sera sur votre bureau mais affiché sur votre ordinateur portable. Si vous voulez faire la même chose en étant assis sur votre bureau (et en envoyant Windows sur votre portable), alors continuez.

Dans votre terminal, vous exécutez

echo $DISPLAY

Cela vous montrera quelque chose comme :

localhost:10.0

Depuis votre bureau :

Ouvrez un terminal et exécutez

DISPLAY=:10.0 firefox

Cela devrait envoyer un firefox sur votre ordinateur portable mais fonctionnant sur votre bureau. Assurez-vous que le numéro que vous mettez (par ex. 10.0 ) est le même que dans le echo résultat

3voto

user530873 Points 697

Vous envisagez d'utiliser une combinaison de SSH et de screen then pour obtenir la situation que vous souhaitez.

Sur votre bureau, installez l'écran :

sudo apt-get install screen

De là, démarrez une nouvelle session d'écran :

screen

et ouvrez firefox dedans :

firefox

Utilisez firefox autant que vous voulez sur votre bureau, puis connectez-vous à votre ordinateur depuis votre portable :

ssh -X username@hostname

Tapez la commande suivante pour voir quelles sessions d'écran vous avez en cours d'exécution :

screen -ls

Connectez-vous à votre session écran (1234 serait le numéro que screen -ls vous a donné)

screen -x 1234

Ensuite, vous pouvez utiliser firefox sur votre ordinateur portable et fermer le terminal sur votre bureau.

3voto

TardisGuy Points 351

Virtualgl créera un bureau supplémentaire (arrière-plan) (Style TightVNC) auquel vous pouvez accéder via un turbo client VNC . Il fonctionnera comme une opération de type bureau à distance -> Mais il sera lecture d'une vidéo fluide sur un réseau.

Si vous cherchez un moyen de décharger la surcharge du CPU pour une connexion à distance, afin que vous puissiez exécuter des applications de votre ordinateur sur votre portable, alors c'est ce que je ferais.

http://www.virtualgl.org/

Vous pouvez également exporter l'environnement de bureau par SSH comme /dude mentionné ci-dessus.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X