Ich versuche, ein X-Fenster zu tunneln. Wenn ja:
user@local: ssh -X user@remote xclock
es funktioniert. Wenn ich mich jedoch zuerst am Computer anmelde und dann das Programm starte, schlägt es fehl.
user@local: ssh -X user@remote
user@remote: xclock
No protocol specified
Error: Can't open display: :0
Was schief gelaufen ist?
Bearbeiten
Ich habe die $DISPLAY
Variable auf der Fernbedienung überprüft:
user@local: ssh -X user@remote "echo $DISPLAY"
:0.0
Das Einstellen auf den gleichen Wert auf der Remote-Seite nach dem Anmelden funktioniert nicht. Die Einstellung $DISPLAY
wie :10.0
vorgeschlagen funktioniert.
user@local: ssh -X user@remote
user@remote: DISPLAY=:10.0 xclock
Ich verstehe immer noch nicht, warum ich für die interaktive und die nicht interaktive Sitzung unterschiedliche $DISPLAY-Werte brauche.
Antwort1
Überprüfen Sie, ob die VariableANZEIGErichtig eingestellt sein auflokaler Host: 10.0. Wenn es das nicht ist,
export DISPLAY=localhost:10.0
, dann versuche esxUhrwieder.
Aber warum muss „DISPLAY“ 10,0 statt 0,0 sein?
DerX-Server(oderX-Fenster, oderX11) ist genau das, ein Server, der darauf wartet, dass Apps sich mit ihm verbinden, um sie anzuzeigen. Das geschieht auf Ihrem PC, wo Apps sich über einen Socket in/tmp, normalerweise genannt/tmp/.X11-unix. Wie alle Server jedochX11kann von Remote-PCs aus kontaktiert werden und zeigt grafisch Anwendungen an, die auf Remote-PCs ausgeführt werden.
Diese Fähigkeit birgt jedoch viele Sicherheitsrisiken, sodass das Öffnen Ihres X11-Servers für Remoteanwendungen sehr schwierig ist (Sie müssen dieselbe Option mindestens dreimal in verschiedenen Konfigurationsdateien angeben).
Geben Sie nunssh, was dies stattdessen sicher macht: Es ist die-J/-XMöglichkeit vonsshdas alle Details zum Öffnen Ihres lokalen X11-Servers für die Remote-Anwendung sicher handhabt (auch durch Verschlüsselung des Datenverkehrs). Wenn Sie jedoch dieFernbedienungxclock lokal ausführen, müssen Sie der Remote-App mitteilen, dass der zu kontaktierende X11-Server nicht ihr eigener X11-Server ist, sondern einer auf einem entfernten PC (dem, von dem aus Sie diesshSitzung). SoxUhrmuss seine Ausgabe sendennichtan einen lokalen Socket in/tmpsondern an einen Netzwerkport (es ist127.0.0.1:6010, welchesshverkürzt sich gnädigerweise auflokaler Host: 10), aus denensshkümmert sich um die Rücksendung an Ihren lokalen PC, wo die Ausgabe schließlich grafisch angezeigt wird.
Wenn Sie die verschiedenen SSH-Verbindungen (vielleicht haben Sie mehrere) nicht trennen möchten durch10Einheiten, wie inlocalhost:10.0, localhost:20.0, …) sollten Sie die Aussage ändern
X11DisplayOffset 10
In/etc/ssh/sshd_configzu was auch immer Sie möchten (obwohl ich, um ehrlich zu sein, keinen Grund dafür sehe).
Mit dieser Anweisung werden die Remote-Anzeigen verfügbar.nichtam Hafen6000(welches sein würdelokaler Host: 0.0), aber auf Backbord6010Sie können dies selbst überprüfen:
$ ssh -Y vps
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Mon Apr 17 02:47:42 2017 from
root@vps:~# ss -lntp | grep 6010
LISTEN 0 0 127.0.0.1:6010 *:* users:(("sshd",16172,8))
LISTEN 0 0 ::1:6010 :::* users:(("sshd",16172,7))