Ich habe eine Maschine mit Ubuntu, auf die ich von meiner Fedora 14-Maschine aus SSH-fähig bin. Ich möchte X vom Ubuntu-Rechner zurück an Fedora senden, damit ich grafische Programme remote ausführen kann. Beide Maschinen befinden sich in einem LAN.
Ich weiß, dass die -X
Option die X11-Weiterleitung in SSH aktiviert, aber ich habe das Gefühl, dass mir einige Schritte fehlen.
Was sind die erforderlichen Schritte, um X von einem Ubuntu-Computer über SSH an Fedora weiterzuleiten?
ssh
xorg
xforwarding
Mr. Shickadance
quelle
quelle
Antworten:
Die X11-Weiterleitung muss sowohl auf der Client- als auch auf der Serverseite aktiviert sein.
Auf der Clientseite die
-X
Optionssh
(großes X), um die X11-Weiterleitung zu aktivieren, und Sie können dies als Standard (für alle Verbindungen oder für eine bestimmte Verbindung) mitForwardX11 yes
in festlegen~/.ssh/config
.Auf der Server - Seite ,
X11Forwarding yes
muss angegeben in/etc/ssh/sshd_config
. Beachten Sie, dass die Standardeinstellung keine Weiterleitung ist (einige Distributionen aktivieren sie standardmäßig/etc/ssh/sshd_config
) und dass der Benutzer diese Einstellung nicht überschreiben kann.Das
xauth
Programm muss serverseitig installiert sein. Wenn dort X11-Programme vorhanden sind, ist es sehr wahrscheinlich, dassxauth
diese vorhanden sind. In dem unwahrscheinlichen Fall, dassxauth
es an einem nicht standardmäßigen Ort installiert wurde, kann es aufgerufen werden~/.ssh/rc
(auf dem Server!).Beachten Sie, dass Sie keine Umgebungsvariablen auf dem Server festlegen müssen.
DISPLAY
undXAUTHORITY
werden automatisch auf die richtigen Werte gesetzt. Wenn Sie ssh ausführen undDISPLAY
nicht festgelegt sind, bedeutet dies, dass ssh die X11-Verbindung nicht weiterleitet.Um zu bestätigen, dass ssh X11 weiterleitet, prüfen Sie, ob eine Zeile
Requesting X11 forwarding
in derssh -v -X
Ausgabe enthalten ist. Beachten Sie, dass der Server in keiner Weise antwortet. Dies ist eine Sicherheitsmaßnahme, um potenziellen Angreifern Details zu verbergen.quelle
xhost +
.xhost
stammt aus einer sanfteren Zeit, in der ein an das Netzwerk angeschlossener Computer bedeutet, dass Sie vertrauenswürdig sind.xhost +
bedeutet, dass jeder, der Ihre IP fälschen kann, die Kontrolle über Ihre X-Serversitzung übernehmen kann.ssh -X
richtet alle erforderlichen Berechtigungen ein. Wenn die X11-Weiterleitung in der Serverkonfiguration deaktiviert ist, wenden Sie sich an Ihren Administrator. Wenn dies nicht funktioniert, lesen Sie X11 über SSH weiterleiten, wenn die Serverkonfiguration dies nicht zulässt .~/.ssh/config
und/etc/ssh/sshd_config
an derselben Stelle. Ich konnte nicht sagen, ob es sich um unterschiedliche Dateien oder nur um eine Änderung der Nomenklatur handelte..Xauthority
Datei. Wenn Sie Red Hat oder ein anderes System mit SELinux verwenden, überprüfen Sie den SELinux-Kontext unter unix.stackexchange.com/questions/36540/…ssh -X
Startxterm &
erhalten Sie ein grafisches Terminal als ultimativen Test, um zu prüfen, ob es funktioniert.Damit die X11-Weiterleitung über ssh funktioniert, sind drei Dinge erforderlich.
Wenn Sie sowohl # 1 als auch # 2 haben, aber # 3 fehlen, erhalten Sie eine leere Umgebungsvariable DISPLAY.
Suppe-zu-Nuss, hier erfahren Sie, wie Sie die Weiterleitung von X11 zum Laufen bringen.
Stellen Sie auf Ihrem Server sicher, dass / etc / ssh / sshd_config Folgendes enthält:
Möglicherweise müssen Sie sshd SIGHUPEN, damit diese Änderungen übernommen werden.
Stellen Sie sicher, dass auf Ihrem Server xauth installiert ist.
Wenn Sie xauth nicht installiert haben, tritt das Problem "Leere DISPLAY-Umgebungsvariable" auf.
Stellen Sie auf Ihrem Client eine Verbindung zu Ihrem Server her. Vergewissern Sie sich, dass ssh die Weiterleitung von X11 zulässt. ich bevorzuge
aber du magst vielleicht
oder Sie können dies in Ihrer ~ / .ssh / config einrichten.
Ich bin heute auf diese leere DISPLAY-Umgebungsvariable gestoßen, als ich auf einen neuen Server zugegriffen habe, den ich nicht verwalte. Das Aufspüren des fehlenden xauth-Teils hat ein bisschen Spaß gemacht. Hier ist, was ich getan habe und was Sie auch tun können.
Auf meiner lokalen Workstation, auf der ich Administrator bin, habe ich überprüft, ob / etc / ssh / sshd_config für die Weiterleitung von X11 eingerichtet wurde. Wenn ich -X wieder in localhost einsetze, wird mein DISPLAY korrekt eingestellt.
Es war nicht allzu schwer, DISPLAY zu zwingen, sich zu entfernen. Ich musste nur beobachten, was sshd und ssh taten, um es richtig einzustellen. Hier ist die vollständige Ausgabe von allem, was ich unterwegs getan habe.
Anstatt sudo zu verwenden, um das Kopieren meiner ssh_host_ {dsa, rsa} _key-Dateien zu erzwingen, habe ich ssh-keygen verwendet, um für mich selbst Dummy-Dateien zu erstellen.
Spülen und wiederholen mit -t dsa:
Bearbeiten Sie ~ / dummy-sshd / sshd_config, um auf die richtigen neuen ssh_host-Schlüsseldateien zu verweisen.
Starten Sie sshd an einem neuen Port im nicht getrennten Modus:
Ups, korrigiere diesen Pfad besser:
Pop ein neues Terminal und ssh in localhost auf Port 50505:
Schauen Sie sich die letzten drei Zeilen an. Ich hatte zufällig DISPLAY gesetzt und hatte diese zwei gut aussehenden Zeilen aus / usr / bin / xauth.
Von dort aus war es ein Kinderspiel, mein / usr / bin / xauth nach /usr/bin/xauth.old zu verschieben, die Verbindung zu ssh zu trennen und das sshd anzuhalten und dann sshd und ssh wieder in localhost zu starten.
Als / usr / bin / xauth nicht mehr vorhanden war, wurde DISPLAY in meiner Umgebung nicht angezeigt.
Hier ist nichts Geniales los. Meistens hatte ich das Glück, einen vernünftigen Ansatz zu wählen, um dies auf meinem lokalen Computer zu reproduzieren.
quelle
export DISPLAY=:10
. Ich habe die Anzahl der Displays nie erraten.Stelle sicher das:
xauth
auf dem Server installiert (siehe:xauth info
/xauth list
).Auf dem Server hat Ihre
/etc/ssh/sshd_config
Datei folgende Zeilen:Auf der Clientseite hat Ihre
~/.ssh/config
Datei folgende Zeilen:Auf der Clientseite haben Sie X-Server installiert (z. B. macOS: XQuartz; Windows: Xming).
Um dann eine X11-Weiterleitung mit SSH durchzuführen, müssen Sie Ihren Befehl ergänzen
-X
ssh
, zstellen Sie sicher , dass Ihr
DISPLAY
ist nicht durch leer:Wenn dies der Fall ist
-v
, überprüfen Sie den ausführlichen Parameter für ssh ( ) auf etwaige Warnungen, zIm Fall haben Sie , nicht vertrauenswürdigen X11 , wie oben gezeigt, dann versuchen
-Y
Flagge statt (wenn Sie den Host vertrauen):Siehe: Was bedeutet "Warnung: Setup der nicht vertrauenswürdigen X11-Weiterleitung fehlgeschlagen: xauth-Schlüsseldaten wurden nicht generiert", wenn mit -X gesendet wird?
Falls Sie gewarnt haben: Keine xauth-Daten , können Sie versuchen, eine neue
.Xauthority
Datei zu generieren , zSiehe: Erstellen / Neuerstellen einer neuen .Xauthority-Datei
Wenn Sie andere Warnungen als oben erhalten haben, befolgen Sie die weiteren Hinweise.
quelle
Das Update besteht darin, diese Zeile zu Ihrem hinzuzufügen
/etc/ssh/sshd_config
:https://joshua.hoblitt.com/rtfm/2013/04/how_to_fix_x11_forwarding_request_failed_on_channel_0/
quelle
Ubuntu unter Windows 10 starten lassen
ssh -X
, um eine GUI-Umgebung auf einem Remote-Server zu erhaltenInstallieren Sie alle folgenden. Installieren Sie unter Windows
Xming
. Unter Ubuntu Bashsudo apt install
zum Installieren verwendenssh xauth xorg
.Gehe in den Ordner mit der
ssh_config
Datei, meine ist/etc/ssh
.ssh_config
Als Administrator bearbeiten (USEsudo
). Innenssh_config
, entfernen Sie den Hash#
in den LeitungenForwardAgent
,ForwardX11
,ForwardX11Trusted
, und , um die entsprechenden Argumente gesetztyes
.In
ssh_config
Datei, entfernen Sie die Front Hash#
vorPort 22
undProtocol 2
, und auch eine neue Zeile am Ende der Datei fügen Sie die xauth Speicherort der Datei angeben,XauthLocaion /usr/bin/xauth
erinnern Sie Ihren eigenen Weg der xauth - Datei schreiben.ssh_config
Nachdem wir die Bearbeitung der Datei abgeschlossen haben, speichern Sie diese, wenn Sie den Editor verlassen. Gehe nun in den Ordner~
oder$HOME
hängeexport DISPLAY=localhost:0
an deine.bashrc
Datei an und speichere sie.Wir sind fast fertig. Starten Sie Ihre Bash-Shell neu, öffnen Sie Ihr
Xming
Programm und verwenden Siessh -X yourusername@yourhost
. Dann genießen Sie die GUI-Umgebung.Das Problem liegt auch im Ubuntu-Subsystem unter Windows, und der Link ist bei
https://gist.github.com/DestinyOne/f236f71b9cdecd349507dfe90ebae776
quelle
Hinzufügen
X11UseLocalhost no
zu/etc/ssh/sshd_config
und den SSH - Server neu starten.Wenn Sie kein DISPLAY erhalten, überprüfen Sie, ob xauth korrekt installiert ist, und versuchen Sie es erneut.
RHE / CEntos hat dieses Problem nicht, dies ist eine Ubuntu-Sache!
quelle
Für mich war das Problem in Nodev Mount Option für / tmp Dateisystem. In X11 muss eine spezielle Datei erstellt werden.
Überprüfen Sie daher, welche Mount-Optionen für das Dateisystem / tmp verfügbar sind, wenn Sie dafür eine separate Partition oder Festplatte verwenden.
quelle
Um die vorherigen ausgezeichneten Antworten zu ergänzen (Einrichten
~/.ssh/config
und Überprüfen, ob dieDISPLAY
Umgebungsvariable auf dem Client eingestellt ist, Einrichten/etc/ssh/sshd_config
und Installierenxauth
auf dem Server), stellen Sie auch sicher, dassxterm
auf dem Client installiert ist, zquelle
xauth
kann gesperrt werden.Verwenden
An der Maschine, in die ich hineingehen wollte,
ssh
brach das Schloss aufxauth
. Das Abmelden von derssh
Sitzung nach dem Ausstellen undxauth -b
anschließenden erneuten Anmelden ermöglichte es mir schließlich, mich erfolgreich abzumeldenecho $DISPLAY
. Versuchen Sie dies auf jeden Fall, bevor Sie neu erstellen.Xauthority
quelle
X11Forwarding
muss auf dem SSH-Server (in Ihrem Fall der Ubuntu-Box) eingestellt seinsshd_config
, und Sie müssen X11 für den SSH-Client (Ihre Fedora-Box) weiterleiten lassen, indem Sie die-X
Option übergeben oder diessh_config
Datei bearbeiten , um denForwardX11
Standard hinzuzufügen .quelle
xauth
auf dem Remotecomputer installiert sein, andernfalls funktioniert das X-Authority-Zeug nicht.DISPLAY
?$DISPLAY
wennX11Forwarding
es aktiviert ist undxauth
auf dem Client-System vorhanden ist.export DISPLAY=:10.0
aber nicht anders. Ansonsten beschwert es sich, dass es nicht finden kann:0
. Vielleicht ist noch etwas anderes nötig, damit dies automatisch geschieht?