Ich habe einen Heim- und einen Arbeitscomputer, der Heimcomputer hat eine statische IP-Adresse.
Wenn ich von meinem Arbeitscomputer zu meinem Heimcomputer sshe, funktioniert die ssh-Verbindung, X11-Anwendungen werden jedoch nicht angezeigt.
In meinem /etc/ssh/sshd_config
zu Hause:
X11Forwarding yes
X11DisplayOffset 10
X11UseLocalhost yes
Bei der Arbeit habe ich folgende Befehle ausprobiert:
xhost + home HOME_IP
ssh -X home
ssh -X HOME_IP
ssh -Y home
ssh -Y HOME_IP
Meine /etc/ssh/ssh_config
bei der Arbeit:
Host *
ForwardX11 yes
ForwardX11Trusted yes
Meine ~/.ssh/config
bei der Arbeit:
Host home
HostName HOME_IP
User azat
PreferredAuthentications password
ForwardX11 yes
Meine ~/.Xauthority
bei der Arbeit:
-rw------- 1 azat azat 269 Jun 7 11:25 .Xauthority
Mein ~/.Xauthority
zu Hause:
-rw------- 1 azat azat 246 Jun 7 19:03 .Xauthority
Aber es geht nicht
Nachdem ich eine SSH-Verbindung nach Hause hergestellt habe:
$ echo $DISPLAY
localhost:10.0
$ kate
X11 connection rejected because of wrong authentication.
X11 connection rejected because of wrong authentication.
X11 connection rejected because of wrong authentication.
X11 connection rejected because of wrong authentication.
X11 connection rejected because of wrong authentication.
X11 connection rejected because of wrong authentication.
X11 connection rejected because of wrong authentication.
X11 connection rejected because of wrong authentication.
kate: cannot connect to X server localhost:10.0
Ich benutze iptables
zu Hause, aber ich habe Port 22 zugelassen. Entsprechend dem, was ich gelesen habe, ist das alles, was ich brauche.
UPD.
Mit-vvv
... debug2: callback start debug2: x11_get_proto: / usr / bin / xauth list: 0 2> / dev / null debug1: Fordert eine X11-Weiterleitung mit Authentifizierungs-Spoofing an. debug2: channel 1: request x11-req confirm 1 debug2: client_session2_setup: id 1 debug2: fd 3 setzt TCP_NODELAY debug2: channel 1: Anfrage pty-req confirm 1 ...
Beim Versuch zu starten kate
:
debug1: client_input_channel_open: ctype x11 rchan 2 win 65536 max 16384 debug1: client_request_x11: request from 127.0.0.1 55486 debug2: fd 8 setze O_NONBLOCK debug3: fd 8 ist O_NONBLOCK debug1: channel 2: new [x11] debug1: bestätige x11 debug2: Die X11-Verbindung verwendet ein anderes Authentifizierungsprotokoll. X11-Verbindung wegen falscher Authentifizierung abgelehnt. debug2: X11 lehnte 2 i0 / o0 ab Debug2: Kanal 2: Lesen fehlgeschlagen debug2: channel 2: close_read Debug2: Kanal 2: Eingang offen -> Drain debug2: kanal 2: ibuf leer debug2: channel 2: send eof Debug2: Kanal 2: Input Drain -> geschlossen Debug2: Kanal 2: Schreiben fehlgeschlagen debug2: channel 2: close_write Debug2: Kanal 2: Ausgang offen -> geschlossen debug2: X11 hat 2 i3 / o3 geschlossen debug2: channel 2: send close debug2: kanal 2: rcvd schließen Debug2: Kanal 2: ist tot debug2: kanal 2: müll sammeln debug1: channel 2: free: x11, nchannels 3 debug3: channel 2: status: Die folgenden Verbindungen sind offen: # 1 Client-Sitzung (t4 r0 i0 / 0 o0 / 0 fd 5/6 cc -1) # 2 x11 (t7 r2 i3 / 0 o3 / 0 fd 8/8 cc -1) # Das Gleiche wie oben, ca. 7-mal wiederholen kate: kann keine Verbindung zum X-Server herstellen localhost: 10.0
UPD2
Bitte geben Sie Ihre Linux Distribution & Versionsnummer an.
Verwenden Sie eine standardmäßige GNOME- oder KDE-Umgebung für X oder etwas anderes, das Sie selbst angepasst haben?
azat: ~ $ kded4 -version Qt: 4.7.4 KDE-Entwicklungsplattform: 4.6.5 (4.6.5) KDE-Daemon: $ Id $
Rufen Sie ssh direkt über eine Befehlszeile von einem Terminalfenster aus auf?
Welches Terminal benutzen Sie? xterm, gnome-terminal oder?
Wie haben Sie das Terminal in der X-Umgebung gestartet? Aus einem Menü? Hotkey? oder ?
Vom Terminalemulator `yakuake` Drücken Sie manuell "Strg + N" und schreiben Sie Befehle
Können Sie xeyes über dasselbe Terminalfenster ausführen, in dem ssh -X fehlschlägt?
`xeyes` - ist nicht installiert Aber `kate` oder eine andere kde App läuft
Rufen Sie den Befehl ssh als der Benutzer auf, unter dem Sie in der X-Sitzung angemeldet sind?
From the same user
UPD3
Ich lade auch ssh
Quellen herunter und benutze debug2()
write, um zu melden, dass die Version unterschiedlich ist.
Es werden einige Cookies angezeigt, von denen eines leer ist und eines leer istMIT-MAGIC-COOKIE-1
quelle
Jedes Mal, wenn Sie Probleme mit ssh haben, sollten Sie als Erstes den Client mit der
-v
Option ausführen , diese Ausgabe für andere zur Überprüfung bereitzustellen:Ich gehe davon aus, dass das Problem auf Ihrem lokalen System liegt. Wie rufen Sie den Befehl ssh auf? Führen Sie es manuell in einer Shell aus? Oder wird es als Teil eines Skripts ausgeführt? In beiden Fällen sollten Sie sicherstellen, dass auf Ihrem lokalen System die
DISPLAY
Umgebung richtig eingestellt ist. Es muss auch auf der Remote-Seite korrekt eingestellt sein, aber dieser Wert unterscheidet sich auf der Remote-Seite von dem auf der lokalen Seite.Nach dem, was Sie geschrieben haben, scheint es, dass es auf dem Remote-Host richtig eingestellt ist (und als Erweiterung wird die X11-Weiterleitung von ssh richtig eingerichtet). Auf dem Remote-System haben Sie:
Was zeigt das auf der lokalen Seite? Das sollte einfach sein , zu überprüfen , ob Sie in einer Shell sind beide durch den Wert Echo, sowie das Starten ein X - App von dieser Shell ... Sie können immer die ehrwürdige verwenden
xeyes
für diese Art von Prüfung, natürlich! :)Wenn Sie andererseits den Befehl ssh von einem Skript aus aufrufen oder an einen Hotkey anhängen, erbt er möglicherweise nicht die erwartete
DISPLAY
Umgebung , sodass die Umgebungsvariable auf der lokalen Seite möglicherweise überhaupt nicht festgelegt wird.Da es aussieht, als hätten Sie an Ihrer
.Xauthority
Datei herumgespielt, möchten Sie sie möglicherweise vollständig löschen. Melden Sie sich dann von Ihrer X-Sitzung ab und wieder an, damit sie automatisch neu erstellt wird. Es besteht selten die Notwendigkeit, sich mit Ihrer zu beschäftigen. Daher.Xauthority
ist es wahrscheinlich nur eine verzweifelte Maßnahme, die nicht hilft.Was Sie auf der lokalen Seite sehen sollten, ist:
Wenn Sie auf einem ordnungsgemäß konfigurierten System eine Shell öffnen und diese nicht manuell festlegen müssen, sollte sie von der Umgebung geerbt werden, von der die Shell gestartet wurde. Allerdings habe ich Window Manager / Hotkey-Konfigurationen gesehen, die die Vererbung von Umgebungsvariablen nicht richtig handhaben. Wenn Sie ein Linux-System verwenden
gnome-session
oder vonkde-session
dem aus Sie Ihre Shells oder Skripte starten, sollten Ihre X-Sitzungsumgebungsvariablen wie in der Ubuntu-Dokumentation zur Vererbung von Umgebungsvariablen beschrieben korrekt festgelegt werden :AKTUALISIERT
Vielen Dank für die Veröffentlichung der Ausgabe von
ssh -vvv
. In diesem Fall ist die zusätzliche Ausführlichkeit von-vvv
versus just-v
hilfreich. Die Debug-Ausgabe teilt mir mit, dass die X11-Weiterleitung korrekt eingerichtet wurde:Aber die
:0
erste Zeile lässt mich glauben, dass immer noch ein Konfigurationsfehler auf der lokalen Seite vorliegt, wie Sie ssh aufrufen. Auf vielen Systemen für den StandardwertDISPLAY
ist:0.0
, nicht:0
. Stellen Sie den Wert vonDISPLAY
manuell ein, bevor Sie den Befehl ssh aufrufen?Weitere Informationen zu Ihrem lokalen System und zum Aufrufen des Befehls ssh sind an dieser Stelle hilfreich.
xeyes
von demselben Terminalfenster aus ausführen, in dem dasssh -X
fehlschlägt?Dieser letzte Punkt ist wichtig. Wenn Sie ssh als anderer Benutzer ausführen (z. B. wenn Sie ein Root-Terminal-Fenster anstelle eines Benutzer-Terminal-Fensters geöffnet haben), tritt dieses Problem auch dann auf, wenn Sie dies explizit festlegen,
DISPLAY=:0
da Sie keine Berechtigungen für haben stelle standardmäßig eine Verbindung zum X-Server als anderer Benutzer her (sogar als root!)quelle
t set
zeige nicht das Handbuch an. In der Tat denke ich, dass ich verstehe, warum es nicht funktioniert, weilX -nolisten
auf der lokalen Maschine-nolisten
hat nichts mit diesem Problem zu tun. Was X betrifft, weiß es nichts über Ihre Remote-SSH-Verbindung. Für X sieht es aus wie jedes andere lokale Programm.sshd
kann auch mit mehr Ausführlichkeit im Vordergrund gestartet werden, falls das Problem auf der Serverseite liegt.Ihre Konfiguration scheint in Ordnung zu sein, aber versuchen Sie es mit "ssh -X home", wie von Agemen vorgeschlagen.
Wenn alles andere fehlschlägt, versuchen Sie Folgendes:
Nachdem Sie von der Arbeit zu Ihrem Heimcomputer gesendet haben, geben Sie "home" ein:
Geben Sie dann auf "Arbeit" ein
Womit Sie eine "xauth>" - Eingabeaufforderung erhalten. Geben Sie hier "add" ein und kopieren Sie dann die Ausgabe der "xauth list" zeilenweise (jede Zeile mit dem Präfix "add"). Beispielsweise:
Lass uns wissen.
quelle
ssh -X home
(schreibe in Post). Über xauth werde ich es morgen versuchen.xauth list & xauth add
, aber immer noch nicht funktioniertxauth add
azat/unix:10 MIT-MAGIC-COOKIE-1 ad01c582768c832ff591277b27863bc7
(weil $ DISPLAY = localhost: 10.0) hinzugefügt, wenn dies helfen kannIch verstehe nicht genau, ob Sie Ihre Remote-Apps auf Ihrem lokalen Bildschirm anzeigen
work
möchten ( ) oder ob Sie sie auf dem Remote-System anzeigen möchten (home
).Im ersten Fall sollte es meiner Meinung
ssh -X host
nach reichen, ohne xhost zu verwenden.Im zweiten Fall ist das System, auf dem Sie xhost verwenden müssen
home
, und es reicht nicht aus, dass Sie auch die Anzeigevariable exportieren müssen.Ich bin mir nicht ganz sicher, was Sie tun möchten ... und da ich nicht weiß, welche Unterschiede zwischen Ihrem und meinem System bestehen, und andererseits die genaue Konfiguration, die für Sie erforderlich ist Ich bin kein Spezialist ^ _ ^). Hoffe, es wird dir in gewisser Weise helfen, da auch diese Konfigurationen für mich funktioniert haben.
quelle
ssh -X home
(schreibe in Post). Ja, ich möchte Remote-Apps auf meinem lokalen Display anzeigen.