Wie starte ich ein Remote-Firefox-Fenster über SSH?


56

Wenn ich zu einer Remote-Box SSH

$ ssh -X remotebox

starte dann firefox auf der remote box

remotebox$ firefox

Wenn Firefox auf meinem lokalen Computer ausgeführt wird, wird ein lokales Firefox-Fenster geöffnet. auf der remote box läuft kein firefox prozess.

Wenn Firefox nicht auf meinem lokalen Computer ausgeführt wird, wird ein Remote-Firefox-Fenster geöffnet.

Warum öffnet es ein lokales Firefox-Fenster? Wie kann ich das verhindern?


Hier noch ein paar Informationen zu meinem lokalen System.

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

Informationen zur 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

Der folgende Befehl startet eine Remote-Firefox-Sitzung mit einem Remote-Firefox-Fenster.

remotebox$ firefox -no-remote

Der folgende Befehl erzeugt eine kurze Verzögerung, kehrt dann zur Eingabeaufforderung zurück und ein lokales Firefox-Fenster wird geöffnet. Auf der Remotebox wird kein Firefox-Prozess ausgeführt.

remotebox$ firefox

Informationen von 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

Der folgende Befehl auf remotebox2 startet erwartungsgemäß eine Remote-Firefox-Sitzung.

remotebox2$ firefox

Ich weiß nicht, warum Firefox auf Remotebox2 eine Remotesitzung anstelle einer lokalen Sitzung startet.


Können wir den Inhalt der $DISPLAYVariablen sowohl auf der lokalen als auch auf der entfernten Maschine erhalten?
Aperson

@aperson, aktualisierte Frage.
Lesmana

Danke, das $DISPLAYscheint kein Problem zu sein, ssh scheint die Dinge richtig einzurichten.
Aperson

Antworten:


46

daneben ist ein firefox -no-remote weiterer Parameter, firefox -no-xshmder die Technik zeigt, mit der es funktioniert.

X11 Shared Memory ist eine Interprozesskommunikationstechnik, die von allen Anwendungen verwendet werden kann, die mit einer bestimmten x-Serversitzung verbunden sind. Es kann verwendet werden, um Drag & Drop und andere Arten von Desktop-Interaktionen durchzuführen.

Es kann (und wird) auch verwendet, um "einmal geöffnete" Anwendungen zu implementieren, um den Platzbedarf (oder die Anzahl der Fenster) zu verringern.

Da das X11-Protokoll netzwerktransparent ist, wird der "Shared Memory" auch auf entfernte X11-Clients ausgedehnt.


Gibt es eine Möglichkeit, x dazu zu bringen, dies nicht zu tun? Ich versuche, ein Videospiel- / Wein-Setup für die einfache Verteilung zu packen, aber dies bereitet mir Kopfschmerzen, da es je nach dem, was der Benutzer des Containers installiert hat und ausführt, ein nicht angegebenes Verhalten verursacht. Ich verwende diese Lösung für die Weiterleitung von x: stackoverflow.com/a/25168483 und möchte einfach sicherstellen, dass der Container den Speicher niemals mit dem Host teilt.
Sir Substance

Bei mir funktioniert das nicht
Bob Ebert

Versuchen Sie den unteren Vorschlag: export MOZ_NO_REMOTE = 1
Kieveli

15

Versuchen firefox -no-remote


Dies funktioniert beim Öffnen eines Remote-Firefox-Fensters. Aber ich verstehe immer noch nicht, warum ein Remote-Befehl ein lokales Firefox-Fenster zum Öffnen auslösen kann.
Lesmana

@lesmana Dies kann an der x11-Weiterleitung liegen. Wenn dies in der sshd_configSituation eingerichtet ist, in der es ausgeführt und zurückgetunnelt wird, kann dies passieren .
Marco Ceppi

10

Beachten Sie, ich habe Kuppel gegraben, da dies mich nervte und Sie können auch einfach hinzufügen:

MOZ_NO_REMOTE=1
export MOZ_NO_REMOTE

zu deinem Profil.


4

Sie können dies versuchen, wenn Sie eine Verbindung zum Computer hergestellt haben ( ssh user@hostAnmerkung: ohne Option -X), geben Sie zuerst den Befehl follow ein

export DISPLAY=:0 

Dies würde die Standardanzeige auf die des aktuellen Desktop-Bildschirms ändern. Und dann einfach tippen

firefox

um Firefox auf dem Desktop-Fenster erscheinen zu lassen. Stellen Sie sicher, dass Sie sich auf dem Desktop angemeldet haben, ohne die (keine Anmeldungen) die folgende Fehlermeldung angezeigt wird.

firefox: cannot connect to X server :0

Diese Methode würde auch für gesperrte Desktops funktionieren. Bitte stellen Sie sicher, dass Sie sich auf dem Desktop und der ssh-Shell mit demselben Benutzernamen angemeldet haben .

Wenn mehrere Desktop - Sitzungen sind, wird jede Sitzung mit einer anderen Zahl als identifiziert :0, :1, :2usw.


Das ist die einzige Antwort, die für mich funktioniert hat.
answerSeeker

2

Keine der anderen Lösungen funktionierte für mich, so dass dies nach ein wenig Suche auf anderen Websites war.

Sie müssen Firefox in einem separaten Prozess genauso ausführen, wie Sie es tun würden, wenn Sie alles auf dem lokalen Computer ausführen würden. Verwenden Sie den Profilmanager, um wie folgt ein neues Profil zu erstellen.

export MOZ_NO_REMOTE=1
firefox -ProfileManager

Um die Konsistenz zu gewährleisten, habe ich beschlossen, jedem neuen Profil auf dem externen Computer denselben Namen wie dem Hostnamen zu geben.


1

Einfaches Remote-Browsing

Wenn Sie lokal im Internet surfen möchten, als würden Sie vor einer Remote-Box sitzen:

$ ssh -X username@remote.example.com

Führen Sie dann Firefox in der Remote-Terminal-Sitzung aus :

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

Beachten Sie die Verwendung von -Xflag im sshBefehl. Sie können auch beide Schritte gleichzeitig ausführen, wie unten gezeigt:

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

Tunneln eines Remote-IP: -Ports

Wenn Sie eine Anwendung haben, die remote ausgeführt wird und ein Web-Frontend verfügbar macht, möchten Sie den Remote-IP-Port so anzeigen, als ob es sich um einen lokalen IP-Port handelt. In diesem Fall -Ldefiniert die Option eine Entsprechung zwischen localhost:localportund remotehost:remoteport, wie im folgenden Pseudobefehl gezeigt:

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

Zum Beispiel:

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

Führen Sie dann Firefox lokal aus :

$ firefox http://127.0.0.1:18080

Im obigen Beispiel verbinden Sie sich über SSH username@router.example.commit und sind an einem Web-Frontend interessiert, das unter verfügbar ist internal.example.com:8080. Dieser entfernte IP: -Port wird lokal unter verfügbar gemacht 127.0.0.1:18080.


0

Ich füge nur hinzu, was für mich funktioniert hat. Einfach firefox -no-remotemit dem üblichen Fehler gescheitert

Error: GDK_BACKEND does not match available displays

Folgendes funktionierte jedoch:

ssh -Y user@host
firefox -no-remote

Die -YOption aktiviert die vertrauenswürdige X11-Weiterleitung. Vertrauenswürdige X11-Weiterleitungen unterliegen nicht den X11 SECURITY-Erweiterungssteuerelementen. Sie können auch eine -COption zum sshBefehl hinzufügen , um die Komprimierung zu aktivieren.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.