web-dev-qa-db-fra.com

Ssh: lancez des programmes d'interface graphique sur écran distant, pas d'affichage x

Le problème

La plupart des gens veulent se connecter à un serveur sur SSH avec l'option "-X" afin d'exécuter des programmes d'interface graphique sur l'hôte distant à l'aide de l'affichage du client. Je souhaite exécuter des programmes d'interface graphique sur le moniteur physique attaché au serveur. Est-ce possible ? Laissez-moi être plus précis:

Ma situation est la suivante: j'ai un poste de travail sans clavier ni souris, mais il a un moniteur qui lui est connecté. Je voudrais ssh avec mon ordinateur portable et être capable de lancer un programme graphique, tel que Xeyes ou SSVNC et qu'il apparaît sur le moniteur du poste de travail.

[xapple@laptop ~]$ ssh workstation
Last login: Mon Sep 26 20:03:35 2011 from laptop
[xapple@workstation ~]$ export DISPLAY=:0
[xapple@workstation ~]$ xeyes
No protocol specified
Error: Can't open display: :0

EDIT: Informations supplémentaires

Je devrais peut-être expliquer quelques choses plus clairement:

  • J'ai accès sudo sur le poste de travail, je peux installer n'importe quoi si nécessaire.
  • Le poste de travail exécute l'interface utilisateur GNOME.
  • Avant de déconnecter le clavier et la souris du poste de travail, je me suis connecté à une session Gnome. On peut parvenir à mon bureau GNOME sur le moniteur du poste de travail actuellement.
  • Je ne souhaite pas exécuter des programmes de mon ordinateur portable sur le poste de travail. J'aimerais lancer des programmes de postes de travail sur le poste de travail. Les Xeyes ou tout ce que l'exécutable se trouve sur le serveur distant et doit être exécuté sur le moniteur du serveur distant.
  • Je comprends que l'exécution de cela va me laisser dans une situation où mon curseur ne sera pas connecté à l'interface. Je ne suis pas capable de cliquer sur les choses. C'est bon.

Toute aide grandement appréciée!

11
xApple

toute application XLIB doit se connecter à un XServer. Vous devez dire à l'application la connexion au serveur par soit:

  • définition de l'affichage de la variable d'environnement
  • en utilisant un drapeau de ligne de commande telle que -display

le premier XServer peut généralement être atteint par la chaîne de connexion ': 0'. Alors, essayez ceci:

xeyes -display :0

ou ca

env DISPLAY=:0 xeyes
5
akira

Ce poste de travail exécute-t-il un serveur Windows X? Sans cela, c'est tout discutable.

Vous avez besoin de quelque chose pour traiter les données dans des graphiques, des pixels, des couleurs et des emplacements. Un "moniteur" est inutile sans sorte de logiciel pour l'exécuter.

En supposant que c'est. (Mais du texte, ça sonne autrement)

Compte tenu des noms d'hôte (et une résolution DNS appropriée via/etc/hosts ou DNS ou autre) de "poste de travail" et "ordinateur portable" ... sinon, remplacez les noms d'hôte de la machine avec des adresses IP appropriées.

ssh workstation
xhost +laptop

vous pouvez ensuite vous déconnecter du poste de travail à ce stade, car cela définit les autorisations sur XServer du poste de travail pour permettre à "ordinateur portable" de se connecter.

si vous démarrez vos programmes avec l'affichage Env ViR Set de manière appropriée, vous pouvez provoquer l'affichage des applications sur le poste de travail, tout en exécutant sur votre ordinateur portable.

DISPLAY=workstation:0 xeyes

-ou alors-

export DISPLAY=workstation:0
xeyes

l'une ou l'autre méthode fonctionnera, ce dernier provoque tout ce que X11 est associé à être affiché sur le poste de travail lors du démarrage de cette coquille. (espère que cela a du sens)

La ligne "xhost" est de permettre la permission de l'ordinateur portable de se connecter au XServer du poste de travail. Sans cela, vous obtiendrez la permission refusée, à moins que vous ne démarrez le serveur X sans autorisations, ce qui n'est pas vraiment recommandé. La protection "Xhost" est toujours boiteuse, car les données sont envoyées "texte brut" entre ordinateur portable et poste de travail et pourraient être reniflées, mais c'est une solution facile.

Si vous souhaitiez la confidentialité, vous devez configurer une sorte de tunnel crypté entre votre ordinateur portable et le poste de travail (Port 6000 pour l'affichage: 0). Yup, ça devient étrange à ce stade.

Si vous êtes dans un environnement contrôlé, vous utilisez la commande "xhost + ordinateur portable" suffira si vous laissez la partie "portable" de cette commande 'xhost +', alors tout le monde peut se connecter au XServer et afficher les choses.

N'oubliez pas que votre souris n'est pas "connectée" au poste de travail XServer et vous ne pourrez pas manipuler des fenêtres ou cliquer sur les choses.

Si vous souhaitez que la souris soit connectée, je recommanderais quelque chose comme X2X, Synergy, VNC ou une application de partage d'écran basé sur X Windows.

5
lornix