web-dev-qa-db-fra.com

Exécuter l'application sur une machine locale et afficher l'interface graphique sur un affichage 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 utilisant 2 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'écran du premier pour afficher la sortie, mais pas l'inverse.

Tous les indicateurs seraient d'une grande aide. Je vous remercie

P.S. Exécution de XFCE 4.10 sur Ubuntu 12.10

34
Vlad Balmos

Variante A - Sous X Windows sur 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 lancé 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écutez grep -r 'nolisten tcp' /etc/ sur votre ordinateur portable pour déterminer le fichier de configuration responsable et supprimez la partie où il est indiqué -nolisten tcp (pas la ligne entière, mais uniquement ce paramètre). Redémarrez X sur votre ordinateur portable.

    Votre ordinateur portable devrait maintenant avoir un affichage fonctionnant sur le port TCP 6000 (essayez d’exécuter nmap -p6000 Laptop sur votre ordinateur de bureau, si le port indiqué était "ouvert", vous en êtes arrivé 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 variable DISPLAY et tout, vous pouvez le faire via ssh.

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

    Correct et sécurisé: exécutez xauth extract cookie-file :0 sur votre ordinateur portable pour exporter le secret de votre droit d’affichage au format "cookie-fichier". Transférez le cookie sur votre ordinateur de bureau. Exécutez xauth merge cookie-file. Ou en une seule étape (à 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 via 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écutez le programme: Dans un terminal de votre ordinateur de bureau, exécutez 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 transmettant un socket X11 local (normalement un socket de domaine Unix) à un socket local TCP sur la machine distante, puis négocie le cookie d'affichage, puis définit 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 (puisque 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=:0. Cela permet à l’écran déjà actif de votre ordinateur portable d’être disponible pour le shell 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 sans risque).
  3. De ce shell ssh à 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 $DISPLAY vous indique la désignation, celle de votre ordinateur portable X a 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, 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 desktop ou Xephyr :1 -broadcast ou 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.

39
Paul Hänsch

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 suffit de taper firefoxdans le terminal.

18
OHLÁLÁ

Préparation

(tu ne fais ça qu'une fois)

Sur votre bureau installez le serveur SSH

Sudo apt-get install openssh-server


À partir 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 fenêtre firefox sur votre ordinateur portable mais s'exécutant sur votre bureau. Assurez-vous que le numéro que vous avez entré (par exemple, 10.0) est le même que dans le résultat echo

7
Nick Andrik

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

Sur votre bureau, installez l'écran:

Écran d'installation Sudo apt-get

À 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 (1234 serait le numéro d’écran que vous avez attribué)

écran -x 1234

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

3
user530873

Virtualgl créera un bureau supplémentaire (en arrière-plan) (Style TightVNC) que vous pouvez accéder via un client turbo VNC. Il fonctionnera comme un contrat de type bureau distant -> Mais il le fera lire la vidéo en douceur 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.

3
TardisGuy

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é.

1
Vlad Balmos

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
1
Mian Asbat Ahmad