Exécuter l'application sur une machine locale et afficher l'interface graphique sur un affichage distant

35

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 à l'aide de deux machines distinctes connectées au réseau local.

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

De par mon expérience limitée avec X, je sais que je peux exécuter un programme sur une machine distante et utiliser l’affichage du premier pour afficher la sortie, mais pas l’inverse.

Tous les indicateurs seraient d'une grande aide. Merci

PS sous XFCE 4.10 sous Ubuntu 12.10

Vlad Balmos
la source

Réponses:

39

Variante A - Passage de X Windows à un autre AFFICHAGE:

  1. Veillez à ce que le serveur X de votre ordinateur portable commence à écouter les connexions TCP. Malheureusement, X11-Networking est désactivé par défaut dans la plupart des distributions. Étant donné que le serveur X est démarré par votre gestionnaire d’affichage (gdm, lightdm), vous devez le configurer à cet emplacement:

    Quel que soit le gestionnaire d’affichage utilisé, certains fichiers de configuration de / etc / contiendront probablement le paramètre responsable XServer. Exécuter grep -r 'nolisten tcp' /etc/sur votre ordinateur portable pour savoir quel fichier de configuration est 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 doit maintenant avoir un affichage fonctionnant sur le port TCP 6000 (essayez de l’exécuter nmap -p6000 Laptopsur votre ordinateur de bureau, si le port indiqué est «ouvert», vous êtes arrivé jusque-là).

  2. Rendez votre X-display disponible sur votre ordinateur de bureau. X11 utilise un mécanisme d'authentification pour accorder l'accès à un affichage. Vous devez autoriser le PC de bureau à enregistrer 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 la DISPLAYvariable et tout, vous pouvez le faire via ssh.

    Rapide et sale: vous pouvez exécuter xhost +desktops.computers.ip.addresssur votre ordinateur portable pour accorder à X l'accès à l'ordinateur de bureau. Notez que chaque utilisateur de votre ordinateur portable peut utiliser votre ordinateur portable X display de cette façon. Notez que cela suffit, c’est-à-dire pour installer un enregistreur de frappe sur l’affichage de votre ordinateur portable. Utilisez cette méthode uniquement pour les tests.

    Correcte et sécurisée: exécutez xauth extract cookie-file :0sur votre ordinateur portable pour exporter votre secret d'accès à l'écran en "fichier de cookie". Transférez le cookie sur votre ordinateur de bureau. Courez xauth merge cookie-file. Ou en une étape rapide (à partir de votre bureau) ssh Laptop xauth extract - :0 |xauth merge -Remarque: si votre ordinateur portable et votre ordinateur de bureau partagent un répertoire personnel, c’est-à-dire que vous utilisez nfs, vous n’avez pas besoin d’échanger des informations d’identité. La base de données des informations d'identification est le fichier .Xauthority de votre répertoire personnel et peut être partagée entre différentes machines.

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

Variante B - Utiliser SSH avec vrille.

SSH achemine X11 en transférant un socket X11 local (généralement un socket de domaine Unix) vers un socket TCP local sur la machine distante, puis en négociant le cookie d'affichage, puis en définissant le paramètre 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 consiste à transférer l'affichage local vers la machine distante (ce qui signifie que les applications distantes peuvent afficher x fenêtres localement).

L'avantage d'utiliser ssh est qu'il n'est pas nécessaire de mettre votre X-Server en mode d'écoute TCP (car le socket Unix est utilisé). Et SSH gère l'échange de données d'identification.

  1. SSH sur votre ordinateur portable à partir de votre ordinateur de bureau (vous n'avez pas encore besoin d'utiliser -X).
  2. Dans le shell distant, entrez export DISPLAY=:0ceci 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 ordinateur portable, mais sera toujours exécutée sur votre ordinateur portable (essayez-le en toute sécurité).
  3. De ce shell ssh sur votre ordinateur de bureau, utilisez -X cette fois. Vous avez maintenant un shell sur la machine sur laquelle la session ssh a été créée, mais cette fois-ci avec X fonctionnant. Exécutez xeyes ou xcalc pour le tester.
  4. echo $DISPLAYvous montre la désignation, votre ordinateur portable X affiche maintenant sur votre ordinateur de bureau. C'est à dire: 10 ou: 11.
  5. Vous pouvez réduire le terminal maintenant. Chaque fois que vous entrez export DISPLAY=:10(voyez le numéro d'affichage que vous avez obtenu) sur votre ordinateur de bureau maintenant, chaque programme que vous exécuterez ensuite dans le même shell apparaîtra sur l'écran de votre ordinateur portable.

    Cette variante est simple mais lente car tout le trafic X11 est transmis via SSH.

Variante C - Le concept original du client léger:

Vous pouvez utiliser votre ordinateur portable pour ouvrir une session de bureau exécutée entièrement sur votre ordinateur de bureau.

  1. Configurez le gestionnaire d’affichage sur votre bureau pour répondre aux diffusions XDMCP. Comment faire cela dépend de votre gestionnaire d'affichage. Certains gestionnaires d’affichage ne supportent pas cela du tout, c’est-à-dire slim. XDM, KDM, WDM, GDM le supportent.

  2. Démarrez un serveur X sur votre ordinateur portable, qui demande le gestionnaire d’affichage à partir de votre bureau. Soit un X imbriqué: Xephyr :1 -query desktopsoit Xephyr :1 -broadcast soit en arrêtant votre Notebooks X-Server et en le saisissant sur un terminal système.sudo Xorg :0 -broadcast

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

Paul Hänsch
la source
2
BTW. Toutes ces merveilleuses fonctionnalités X11 cesseront de fonctionner une fois que Ubuntu aura basculé sur Wayland. Les applications NAtive Wayland ne peuvent même plus être transmises via ssh.
Paul Hänsch
6
N’est-il pas assez ironique qu’il n’existe aucune chaîne d’outils graphique pour contrôler votre X-Server? Si vous voulez vraiment travailler avec des interfaces graphiques, vous devez d'abord dominer la ligne de commande.
Paul Hänsch
Astuce générale: Le premier programme que vous voudrez peut-être démarrer sur votre afficheur à distance est un démarreur d'application. C'est à dire lxpanel ou quelque chose. Cela économise beaucoup de travail en ligne de commande.
Paul Hänsch
Est-ce que cela fonctionne toujours pour Ubuntu 17 + ... ou est-ce que la prédiction de Wayland s'est réalisée?
Xen2050
19

Vous pouvez utiliser ssh X forwarding pour atteindre votre objectif. Si vous êtes dans le même sous-réseau qu'il est quitté rapidement.

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

sudo apt-get install ssh

Pour vous 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 démarrer n’importe quel logiciel en utilisant le terminal, par exemple en démarrant Firefox, il vous suffit de taper firefoxle terminal.

OH LA LA
la source
2
N'oubliez pas de vérifier que X11Forwarding est également défini sur yes dans les fichiers de configuration sshd (généralement, / etc / ssh / sshd_config).
Matrix Mole
Voici mon cas d'utilisation: je suis sur mon bureau et j'ouvre Firefox, par exemple, mais je veux que la fenêtre du navigateur s'ouvre sur l'écran de mon ordinateur portable et continue à s'exécuter sur mon bureau. Je recherche une fonctionnalité similaire aux espaces de travail, mais au lieu d'un espace de travail local (4 écrans sur le même PC) pour utiliser un espace de travail distant (l'ordinateur portable)
Vlad Balmos
2
Aussi, vous pouvez essayer le x2xpackage, vous pouvez utiliser un clavier et une souris sur une machine différente. ex:ssh -X user@host x2x -west -to :0
OHLÁLÁ
@iUngi J'utilise déjà la synergie pour cela, merci quand même
Vlad Balmos
Sachez qu'en ouvrant l'accès au serveur X de votre bureau, vous donnez un accès assez large à la machine distante. Si votre serveur était compromis, cela pourrait également être utilisé pour accéder à votre bureau. Le transfert X11 est utile, mais pensez à ce que vous faites et ne l'activez pas par défaut.
mc0e
7

Préparation

(tu ne fais ça qu'une fois)

Sur votre bureau installez le serveur SSH

sudo apt-get install openssh-server


De votre ordinateur portable:

ssh -X nom d'utilisateur @ desktop_pc_ip

Dans le terminal, tout ce que vous exécutez sera sur votre bureau mais affiché sur votre ordinateur portable. Si vous souhaitez faire de même alors que vous êtes assis sur votre bureau (et envoyer des fenêtres sur votre ordinateur portable), continuez.

Vous courez sur votre terminal

echo $ DISPLAY

Cela vous montrera quelque chose comme:

localhost:10.0

De votre bureau:

Ouvrir un terminal et courir

DISPLAY=:10.0 firefox

Cela devrait envoyer une firefoxfenêtre sur votre ordinateur portable, mais en cours d'exécution sur votre bureau. Assurez-vous que le nombre que vous mettez (par exemple 10.0) est le même que dans le echorésultat

Nick Andrik
la source
3

Vous envisagez d’utiliser une combinaison de SSH et d’écran pour obtenir la situation souhaitée.

Sur votre bureau, installez l'écran:

écran sudo apt-get install

À partir de là, démarrez une nouvelle session d’écran:

écran

et ouvrez firefox dedans:

firefox

Utilisez firefox tout ce que vous voulez sur votre bureau, puis ssh sur votre ordinateur depuis votre ordinateur portable:

ssh -X nom d'utilisateur @ nom d'hôte

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

écran -ls

Connectez-vous à votre session d'écran (le nombre que l'écran vous a attribué est 1234)

écran -x 1234

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

utilisateur530873
la source
essayé ça. ouvert écran du terminal, démarré firefox sur le bureau, puis sshed de l'ordinateur portable dans le bureau, attaché la session d'écran, mais je ne reçois aucune fenêtre sur l'ordinateur portable, juste la sortie du programme en cours à l'écran.
Vlad Balmos
Vous avez tout mélangé. Attends ... au moins l'un d'entre vous l'a fait. Installez l’écran sur votre ordinateur de bureau, utilisez votre ordinateur portable sur ssh -Xvotre bureau, démarrez l’écran dans la session SSH, détachez-le et laissez la session en cours. Rattachez ensuite la session d'écran avec les mains sur votre ordinateur de bureau et exécutez quelque chose. Ceci est similaire à ma réponse "SSH with a twist". L'utilisation de l'écran le rend un peu plus pratique.
Paul Hänsch
3

Virtualgl créera un bureau (en arrière-plan) supplémentaire ( style TightVNC) auquel vous pourrez accéder via un client VNC turbo . Il fonctionnera comme un contrat de type bureau distant -> Mais il jouera une vidéo fluide sur un réseau.

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

http://www.virtualgl.org/

Vous pouvez également exporter l'environnement de bureau via SSH comme indiqué ci-dessus.

TardisGuy
la source
Merci. Cela semble prometteur. Je vais jeter un coup d'œil et vous tenir au courant.
Vlad Balmos
Ouais, "TurboVNC" (plus particulièrement avec son composant VirtualGL) EST le résultat de ma recherche d'un programme de bureau à distance qui me permettrait de jouer à des jeux vidéo et des films. Cela fonctionnerait facilement comme un moniteur supplémentaire.
TardisGuy
1

Après quelques recherches supplémentaires en ligne, je suis tombé sur DMX

De la page d'accueil

Xdmx est un serveur X proxy qui prend en charge plusieurs têtes pour plusieurs écrans connectés à différentes machines (chacune exécutant un serveur X typique). Lorsque Xinerama est utilisé avec Xdmx, les affichages multiples sur plusieurs machines sont présentés à l'utilisateur sous la forme d'un seul écran unifié.

Vlad Balmos
la source
1
Ce serait une meilleure réponse si vous pouvez donner des instructions sur l'installation et l'utilisation.
fossfreedom
XmetaX fournit des fonctionnalités similaires. Existe-t-il une alternative à Xdmx et XmetaX?
Mariusz
1

Oui c'est possible. Je prends les deux ordinateurs Linux avec xclock installé sur l'ordinateur local. J'essaie d'exécuter xclock localement et d'afficher l'horloge sur un ordinateur Linux distant.

reboot the remote machine
Disable firewall
Disable SELINUX
Check $DISPLAY variable value by command
echo $DISPLAY
Let say its value is :1
run command
xhost +

Now on local computer
xclock -display remote_machine_IP_address:1
Mian Asbat Ahmad
la source