Comment lancer une fenêtre firefox à distance via SSH?


56

Quand je SSH à une boîte distante

$ ssh -X remotebox

puis démarrez Firefox sur le boîtier distant

remotebox$ firefox

et j’ai firefox fonctionnant sur ma machine locale, une fenêtre firefox locale s’ouvrira. aucun processus firefox n'est en cours d'exécution sur la boîte à distance.

Si firefox ne fonctionne pas sur ma machine locale, une fenêtre firefox distante s'ouvrira.

Pourquoi ouvre-t-il une fenêtre firefox locale? Comment puis-je empêcher cela?


Voici quelques informations supplémentaires de mon système local.

Linux lesmana-laptop 2.6.32-24-generic #42-Ubuntu SMP Fri Aug 20 14:24:04 UTC 2010 i686 GNU/Linux

No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 10.04.1 LTS
Release:    10.04
Codename:   lucid

DISPLAY=:0.0

Mozilla Firefox 3.6.8, Copyright (c) 1998 - 2010 mozilla.org

Information de remotebox.

Linux dxray 2.6.22.19-0.4-default #1 SMP 2009-08-14 02:09:16 +0200 x86_64 x86_64 x86_64 GNU/Linux

LSB Version:    core-2.0-noarch:core-3.0-noarch:core-2.0-x86_64:core-3.0-x86_64:desktop-3.1-amd64:desktop-3.1-noarch:graphics-2.0-amd64:graphics-2.0-noarch:graphics-3.1-amd64:graphics-3.1-noarch
Distributor ID: SUSE LINUX
Description:    openSUSE 10.3 (X86-64)
Release:    10.3
Codename:   n/a

DISPLAY=localhost:15.0

Mozilla Firefox 3.0.14, Copyright (c) 1998 - 2009 mozilla.org

La commande suivante démarre une session firefox à distance avec une fenêtre firefox à distance.

remotebox$ firefox -no-remote

La commande suivante produit un bref délai, puis revient à l'invite et une fenêtre firefox locale apparaît. Aucun processus firefox en cours d'exécution sur la remotebox.

remotebox$ firefox

Information de remotebox2.

Linux marvin 2.6.31-22-generic #60-Ubuntu SMP Thu May 27 00:22:23 UTC 2010 i686 GNU/Linux

No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 9.10
Release:    9.10
Codename:   karmic

DISPLAY=localhost:11.0

Mozilla Firefox 3.6.8, Copyright (c) 1998 - 2010 mozilla.org

La commande suivante sur remotebox2 démarre une session firefox distante comme prévu.

remotebox2$ firefox

Je ne sais pas pourquoi firefox sur remotebox2 démarre une session à distance au lieu d’une session locale.


Pouvons-nous obtenir le contenu de la $DISPLAYvariable à la fois sur la machine locale et sur la machine distante?
Aperson

@aperson, question mise à jour.
Lesmana

Merci, $DISPLAYcela ne semble pas être un problème, ssh semble mettre les choses en place correctement.
Aperson

Réponses:


46

En outre, firefox -no-remote un autre paramètre est firefox -no-xshmla technique utilisée pour le faire fonctionner.

La mémoire partagée X11 est une technique de communication interprocessus qui peut être utilisée par toutes les applications connectées à une session x serveur donnée. Il peut être utilisé pour effectuer un glisser-déposer et d'autres types d'interactions sur le bureau.

Il peut être (et est) utilisé également pour implémenter des applications «ouvertes une fois», afin de réduire l'encombrement (ou le nombre de fenêtres).

Le protocole X11 étant transparent au réseau, la "mémoire partagée" est étendue aux clients X11 distants.


Y a-t-il un moyen de faire en sorte que x ne le fasse pas? Je cherche à mettre en conteneur une configuration vin / jeu vidéo pour une distribution facile, mais cela me cause des maux de tête, car cela entraînera un comportement non spécifié en fonction de ce que l'utilisateur du conteneur a installé et en cours d'exécution. J'utilise cette solution pour effectuer le transfert x: stackoverflow.com/a/25168483 et je voudrais simplement m'assurer que le conteneur ne partage jamais la mémoire avec l'hôte.
Monsieur Substance

Ça ne marche pas pour moi
Bob Ebert

Essayez la suggestion inférieure: exportez MOZ_NO_REMOTE = 1
Kieveli le

15

Essayer firefox -no-remote


cela fonctionne en ouvrant une fenêtre firefox à distance. mais je ne comprends toujours pas pourquoi une commande à distance peut déclencher l’ouverture d’une fenêtre firefox locale.
Lesmana

@lesmana cela peut être dû à un x11-forwarding - si cela est configuré dans le, sshd_configvous pouvez être dans une situation où il est exécuté et redirigé en tunnel.
Marco Ceppi

10

Notez que j'ai creusé dans le dôme car cela me dérangeait et vous pouvez aussi simplement ajouter:

MOZ_NO_REMOTE=1
export MOZ_NO_REMOTE

à votre profil.


4

Vous pouvez essayer cela lorsque vous vous êtes connecté à la machine ( ssh user@hostremarque: sans l'option -X), tapez d'abord la commande suivante

export DISPLAY=:0 

cela changerait l'affichage par défaut à celui de l'écran du bureau actuel. Et puis il suffit de taper

firefox

faire apparaître firefox sur la fenêtre du bureau. Assurez-vous que vous êtes connecté au bureau, sans lequel (sans connexions) vous obtiendrez l'erreur suivante;

firefox: cannot connect to X server :0

Cette méthode fonctionnerait également pour les ordinateurs verrouillés. Assurez-vous que vous êtes connecté au bureau et au shell ssh avec le même nom d'utilisateur.

Quand il y a plusieurs sessions de bureau, chaque session est identifiée par un numéro différent comme :0, :1, :2, etc.


C'est la seule réponse qui a fonctionné pour moi.
answerSeeker

2

Aucune des autres solutions n’a fonctionné pour moi, c’est donc après quelques recherches sur d’autres sites.

Vous devez exécuter firefox dans un processus séparé de la même manière que si vous le faisiez tous sur la machine locale. Utilisez le gestionnaire de profil pour créer un nouveau profil comme suit.

export MOZ_NO_REMOTE=1
firefox -ProfileManager

Pour garder les choses cohérentes, j'ai décidé de nommer chaque nouveau profil sur la machine externe de la même manière que le nom d'hôte.


1

Navigation à distance simple

Si vous souhaitez naviguer sur le Web localement comme si vous étiez assis devant une boîte distante:

$ ssh -X username@remote.example.com

puis lancez Firefox dans la session de terminal à distance :

$ firefox https://test-ipv6.com/

Notez l'utilisation de -Xflag dans la sshcommande. Vous pouvez également effectuer les deux étapes en une seule fois, comme indiqué ci-dessous:

$ ssh -X username@remote.example.com firefox http://test-ipv6.com/

Tunnelling d'une adresse IP distante: port

Si vous avez une application s'exécutant à distance qui expose une sorte de front web, vous serez intéressé par l'exposition du port IP: distant comme s'il s'agissait d'un IP: port local. Dans ce cas, l' -Loption définit une correspondance entre localhost:localportet remotehost:remoteport, comme indiqué dans la pseudo-commande ci-dessous:

ssh -L localhost:localport:remotehost:remoteport remoteuser@remotehost

Par exemple:

$ ssh -L 127.0.0.1:18080:internal.example.com:8080 username@router.example.com

puis exécutez Firefox localement :

$ firefox http://127.0.0.1:18080

Dans l'exemple ci-dessus, vous vous connectez via SSH à username@router.example.comet vous êtes intéressé par une interface Web exposée à l'adresse internal.example.com:8080. Cette adresse IP distante: le port sera exposé localement à 127.0.0.1:18080.


0

Je vais juste ajouter ce qui a fonctionné pour moi. Simplement utiliser a firefox -no-remoteéchoué avec l'erreur habituelle

Error: GDK_BACKEND does not match available displays

Cependant, les éléments suivants ont fonctionné:

ssh -Y user@host
firefox -no-remote

L' -Yoption active le transfert X11 de confiance. Les redirections X11 de confiance ne sont pas soumises aux contrôles d'extension X11 SECURITY. Vous pouvez également envisager d’ajouter une -Coption à la sshcommande pour activer la compression.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.