Ich möchte einen Port für VNC zurück zu meinem Haus bringen. Ich muss über einen einzelnen Host springen, um dann zu meiner eigentlichen Arbeitsmaschine zu springen.
sittinghere
wird meine lokale Heimmaschine seinhopper
werde durch das zwischenhüpfen das ich machen mussoverthere
wird die Fernarbeitsmaschine sein
Ich kann dies mit SSH in meine Arbeitsmaschine tun:
ssh -t hopper "ssh -t overthere"
Ich möchte die Portweiterleitung verwenden, um den Remote-Port 5900 an overthere
den lokalen Port 5900 weiterzuleiten sittinghere
. Ich würde es jedoch vorziehen, dies zu tun, ohne offen an einen Port gebunden zu sein, hopper
da jeder auf diesem Computer in der Lage wäre, eine Verbindung zu meiner VNC-Verbindung herzustellen.
Kann ich diesen Port sicher an meinen lokalen Computer weiterleiten, ohne dass jemand darauf zugreifen kann hopper
?
ssh
port-forwarding
Naftuli Kay
quelle
quelle
Antworten:
Verwendung der nativen Fähigkeit von SSH, Ports weiterzuleiten. Von
sittinghere
ausführen:Richten Sie Ihren VNC-Client auf
localhost:5900
und der Datenverkehr wirdoverthere:5900
über die auf eingerichtete SSH-Verbindung weitergeleitethopper
quelle
hopper
, und dann denhopper
gesamten Datenverkehr an weiterleitetoverthere:5900
. Wenn Sieoverthere:5900
auf0.0.0.0
der angegebenen Schnittstelle lauschen , funktioniert dies, aber nicht, wenn Sie auf der angegebenen Schnittstelle lauschen127.0.0.1
.Ich habe einige SSH-
~/.ssh/config
Hacks verwendet, um dies zu ermöglichen:Was dies bedeutet ist , dass , wenn ich versuchen , eine Verbindung
ssh overthere
aussittinghere
, es verbindet sichhopper
dann als Proxy die SSH - Verbindung zum Port 22 aufoverthere
(dh: SSH aufoverthere
).Dies hat einige tolle Nebenwirkungen:
Alles funktioniert super und soweit ich das beurteilen kann, wird 5900 nicht geöffnet
hopper
, sondern nur direkt vonoverthere
an weitergeleitetsittinghere
.quelle
apt-get install netcat-traditional -y
) installieren . Dann sollten Sie dennc
Typ explizit in der Konfigurationsdatei angeben (durch Ersetzennc
durchnc.traditional
).Sie können einen Port vom SSH-Port
sittinghere
zumoverthere
SSH-Port weiterleitenhopper
. Dann können Sie diesen Port verwenden, umoverthere
direkt von zu erreichensittinghere
. In dieser zweiten SSH-Sitzung können Sie VNC oder beliebige andere Ports weiterleiten, währendhopper
nur eine verschlüsselte SSH-Sitzung angezeigt wird.Erste SSH-Sitzung:
Teilen Sie dem SSH-Client nun mit, wie er erreichen kann,
overthere
indem Sie diese Konfiguration zu~/.ssh/config
on hinzufügensittinghere
Zweite SSH-Sitzung:
Oder einfach eine regelmäßige interaktive SSH-Sitzung ohne den VNC-Porttunnel:
Wenn Sie sich nicht die Mühe machen möchten, Zeilen hinzuzufügen, können
~/.ssh/config
Sie ihm dennochoverthere
über die Befehlszeile mitteilen, wie eine Verbindung hergestellt werden soll:... aber ohne
HostKeyAlias
SSH wird deroverthere
Fingerabdruck des Schlüssels nicht korrekt überprüft .Alle Befehlszeilen müssen von ausgeführt werden
sittinghere
.Übrigens, ich glaube , Sie wahrscheinlich nicht brauchen , werden mit
ssh
‚s --t
Option.quelle
Schließen Sie zuerst den Trichter an, während Sie einen Tunnel zwischen dem Arbeiter und dem Heim-PC herstellen.
dann mach ssh ro mit vnc tunnel drüber
Jetzt können Sie sich mit vnc verbinden. Übrigens ändern Sie die Konfiguration von vnc, um localhost zu hören
quelle
Wenn Sie den VNC-Client
vncviewer
über die Befehlszeile verwenden, können Sie ihn mit dem-via
Switch anweisen, vor dem Herstellen eineruser@host
Verbindung mit dem VNC-Server eines anderen Hosts einen Tunnel zu durchlaufen .Beispiel
Sie können auch verwenden
vinagre
, um eine Verbindung über einen SSH-Tunnel über die GUI herzustellen. Stellen Sie dazu Ihre Verbindung analog über den Verbindungsdialog invinagre
:Dies führt dazu, dass Ihre Verbindung hergestellt und über den SSH-Tunnelhost getunnelt wird.
Verweise
quelle
Der folgende Befehl sollte auch einwandfrei funktionieren
Es wurde mit zusätzlichen Parametern getestet, um den PostgreSQL-Server
postgres-server
an einem benutzerdefinierten Port (-p
Switch) und unter Verwendung eines benutzerdefinierten Benutzernamens zu verbinden.Wie Sie sehen, ist diese Lösung einfach und erfordert keine Konfigurationsänderungen von ssh oder Zwischenschritte.
quelle