web-dev-qa-db-fra.com

Lancer l'application via ssh

Je suis nouveau sur SSH. Je peux me connecter à un ordinateur distant. Je peux également lancer une application sur un ordinateur distant et voir son interface graphique sur mon écran.

Mais je ne sais pas comment lancer une application sans que celle-ci produise une sortie sur mon écran.

Je souhaite lancer une application (par exemple, rhythmbox) et fermer la connexion ssh tout en laissant l'application en cours d'exécution sans envoyer de sortie à mon écran.

Surfer sur le Web, j'ai trouvé des conseils, mais rien ne m'a aidé;

ssh -X name@domain
Nohup rhythmbox &
logout
5
0xDE4E15B

Voulez-vous dire que vous voulez que Rhythmbox soit affiché sur l'écran de l'ordinateur distant? L'écran sur lequel une application graphique est affichée est indiqué par la variable d'environnement DISPLAY. Lorsque vous exécutez ssh -X, DISPLAY est défini sur une valeur indiquant que les demandes d'affichage doivent être transmises via la connexion SSH. Pour que l'application apparaisse sur l'écran de l'ordinateur distant, définissez DISPLAY sur la valeur :0.

ssh [email protected] 'DISPLAY=:0 rhythmbox &'

Il y a encore un obstacle: lorsqu'une application se connecte à un écran X, elle doit fournir une sorte de mot de passe appelé cookie. Le cookie est généré à chaque démarrage du serveur X. Ubuntu enregistre le cookie dans un fichier portant un nom généré aléatoirement. Le moyen le plus simple de trouver le cookie consiste à le stocker dans un nom de fichier connu au démarrage du serveur X. Sur Ubuntu, ajoutez ce code à votre ~/.profile:

case $DISPLAY:$XAUTHORITY in
  :*:?*)
    # DISPLAY is set and points to a local display, and XAUTHORITY is
    # set, so merge the contents of `$XAUTHORITY` into ~/.Xauthority.
    XAUTHORITY=~/.Xauthority xauth merge "$XAUTHORITY";;
esac

Pour plus d’arrière-plan, voir variable ssh DISPLAY .


Ou voulez-vous dire que vous ne voulez jamais voir la fenêtre Rhythmbox? Si oui, connectez-le à un serveur X virtuel, xvfbInstall xvfb . Démarrez le serveur X virtuel, puis indiquez à Rhythmbox de s'y connecter.

ssh [email protected] 'Xvfb :1 -screen 0 800x600x8 & sleep 1; DISPLAY=:1 rhythmbox &'
3
Gilles