
Für die Arbeit muss ich von meinem lokalen Rechner per SSH über Rechner A auf Rechner B zugreifen. Das Problem ist, dass Rechner A keine X11-Weiterleitung hat und ich nicht die Superuser-Berechtigungen habe, um das zu ändern. Auf Rechner B habe ich jedoch Superuser-Berechtigungen und dort ist die X11-Weiterleitung aktiviert.
Gibt es eine Möglichkeit, X11 von B über A an meinen lokalen Computer weiterzuleiten, ohne dass die X11-Weiterleitung auf A aktiviert ist?
Ich habe es versucht,
ssh -t -X user@A ssh -X user@B
es auszuführen, ssh -t user@A ssh -X user@B
aber Maschine A gibt X11 forwarding request failed on channel 0
beim Anmelden immer noch etwas aus.
Antwort1
fügen Sie dies zu Ihrer ~.ssh/config hinzu:
Host BviaA
HostName hostB
ProxyCommand ssh user@hostA nc %h %p 2> /dev/null
Dann ssh -X user@BviaA
sollte es klappen
Beachten Sie, dass ich im Konfigurationsabschnitt oben verwendet habe, Host BviaA
um deutlicher zu machen, was passiert. Sie können Host hostB
es auch vollständig transparent arbeiten lassen: ssh -X user@hostB
(Als ob kein Gateway erforderlich wäre.)
Alternativ als Einzeiler zum Testen ohne Konfigurationsänderungen:
ssh -X -oProxyCommand="ssh user@hostA nc %h %p" user@hostB
Antwort2
Vielen Dank @rudimeier für deine Antwort.
Ich hatte ein Problem mitkeineOption bei Verwendung von SSH, aber diese Variante (basierend auf dem, was @aDroid erklärt hatHier) hat bei mir funktioniert. Das ist also im Wesentlichen das gleicheEinzeiler-Antwortvon @rudimeier für neuere Versionen von OpenSSH:
$ ssh -X -oProxyCommand="ssh [email protected] -W %h:%p" [email protected]
@Benutzer4556274Antworthat bei mir auch funktioniert (auch an Sie danke).
Ich würde in beiden Schritten einfach Benutzernamen hinzufügen, um Neulingen wie mir zu verdeutlichen, wie es funktioniert (nachdem Sie den 1. Befehl eingegeben haben, verhält sich der lokale Port 2222 so, als wäre er Port 22 auf Maschine B; im 2. Befehl übergeben wir also den Benutzernamen von Maschine B):
$ ssh -Nf -L2222:destination.host-B.address:22 [email protected]
$ ssh -p 2222 -X userB@localhost
Antwort3
Möglicherweise können Sie die Portweiterleitung über A durchführen. Verwenden Sie
$ ssh -Nf -L2222:B:22 A
um einen SSH-Prozess im Hintergrund zu starten, der von Ihrem lokalen Rechner über A zu B weiterleitet. Verbinden Sie sich dann mit B über
$ ssh -p 2222 -X localhost