Mit der SSH X11-Weiterleitung (`ssh -X`) können Sie versuchen, X-Anwendungen auszuführen, indem Sie` Can't open display` aufrufen

22

Ich kann mich mit einloggen

ssh -X Hostip

Aber wenn ich den Befehl xclock ausführe, wird mir dieser Fehler angezeigt

Error: Can't open display: localhost:11.0

Ich überprüfe meinen Anzeigewert mit

echo $DISPLAY

und das Ergebnis ist

localhost:11.0

Und die X11-Weiterleitung ist in der Datei sshd_config auf YES gesetzt

X11Forwarding yes
X11DisplayOffset 10
X11UseLocalhost yes

Irgendwelche Ratschläge, was ich hier vermisse?

OmiPenguin
quelle
3
Hast du es -Ystattdessen versucht -X?
Flup
2
Stellen Sie außerdem sicher, dass Sie die Auswirkungen der Verwendung von -Yanstelle von verstehen -X. Vielleicht möchten Sie auch anschauen xhost.
einen Lebenslauf vom
1
Für RedHat / CentOS 7 (mindestens) benötigen Sie das Paket xorg-x11-xauth (siehe meine Antwort hier): unix.stackexchange.com/questions/138936/…
Mike S

Antworten:

18

Verwenden Sie -Y. Von der Manpage auf ssh:

-Y Aktiviert die vertrauenswürdige X11-Weiterleitung. Vertrauenswürdige X11-Weiterleitungen unterliegen nicht den X11 SECURITY-Erweiterungssteuerelementen.

Wenn Sie dennoch Probleme haben, können Sie versuchen , $DISPLAYdie IP- Adresse Ihrer lokalen Box festzulegen :

$ export DISPLAY='<ip_address>:11.0'

Es kann funktionieren, es als einzustellen

$ export DISPLAY='127.0.0.1:11.0'

Menschen scheinen dieses Problem häufig zu haben, wenn sie von Mac OS X aus ssh'en . Möglicherweise möchten Sie auch festlegen

X11UseLocalhost no

auch in diesem Fall.

Kyle Kelley
quelle
1
Unter Verwendung von XQuartz konnte ich das Flag -Y nicht verwenden. "X11-Verbindung wegen falscher Authentifizierung abgelehnt."
Erik
5
Selbst nachdem ich Ihre anderen Vorschläge ausprobiert habe, kann ich keine Anzeige öffnen.
Erik
2
Keiner von beiden hat auch für mich funktioniert. Ich musste die XWindow-Unterstützung auf meinem Centos 7-Server installieren (minimal) mit: yum groupinstall "X Window System" -y
Mark Edington
@MarkEdington Dies liegt daran, dass RedHat / CentOS das Paket xorg-x11-xauth benötigt, wie in meiner Antwort hier angegeben: unix.stackexchange.com/questions/138936/…
Mike S
6

das hat bei mir geklappt:

Veränderung

X11UseLocalhost yes

zu

X11UseLocalhost no
Don
quelle
Danke, Don. das hat bei mir auch geklappt. Ich habe dir eine Gegenstimme gegeben. Ich glaube, das Problem, das die Standardeinstellung stört, war, dass der bestimmte Computer xhost-fähig ist.
LD James
6
auf gast? Wirt? welche Konfigurationsdatei? Vielen Dank, um Ihre Antwort zu vervollständigen
Philippe Gachoud
Ich habe es geschafft zu arbeiten, indem ich die Einstellungen auf fallen gelassen habe /etc/ssh/sshd_config.
Llinfeng
6

Wir danken /unix//a/12772/61349 für die Diagnoseanweisungen.

Stellen Sie sicher, dass Ihr ssh-Client die X11-Weiterleitung mit dem Flag -v anfordert

ssh example.com -X -v

Und suchen Sie nach der spezifischen Nachricht:

debug1: Requesting X11 forwarding with authentication spoofing.

Ein weiteres Anzeichen für ein verräterisches Problem ist das Fehlen der DISPLAYfür Sie festgelegten Umgebungsvariablen. Wenn es leer / nicht gesetzt ist, stimmt etwas nicht. Zumindest gemäß dem gleichen Beitrag, der oben gutgeschrieben wurde , werden diese Variablen automatisch für Sie festgelegt.


Ich habe mit einem SSH-Control-Master meine SSH-Verbindungen folgendermaßen verwendet:

Host <hostname>
    ControlMaster auto
    ControlPath ~/.ssh/control/%r@%h:%p
    ControlPersist 10m

Meine frühere SSH-Verbindung forderte kein X11Firwarding an, daher wurden sshdie Optionen für zukünftige Anrufe nicht verwendet. Also für mich

ssh -Xwurde einfach komplett ignoriert

Wenn "X11-Weiterleitung anfordern" nicht angezeigt wird, die Muxer-Sitzungen jedoch wiederverwenden;

debug1: auto-mux: Trying existing master
debug1: mux_client_request_session: master session id: 10

Anschließend müssen Sie Ihren aktuellen ControlMaster für diese Verbindung beenden und die Verbindung mit dem Flag -X / -Y wiederherstellen.

So stoppen Sie Ihren ControlMaster

ssh -O check <hostname>

Master running (pid=2758)

(Dadurch werden alle aktiven Verbindungen mit dem ControlMaster beendet.)

ssh -O exit <hostname>

Exit request sent.
ThorSummoner
quelle
3

Beim Versuch, eine Weiterleitung an XQuartz unter macOS durchzuführen, habe ich das Problem behoben, indem ich den sshBefehl ( ssh -Yin meinem Fall) über das XQuartz-Terminal ausgeführt habe (der durch Klicken mit der rechten Maustaste auf das XQuartz-Symbol im Dock und Klicken auf Anwendungen> Terminal geöffnet wurde).

Harry Cutts
quelle
das hat bei mir
geklappt
3

Was dies für mich behoben hat, ist einfach xauth zu installieren.

Mostafa
quelle