Ich leite derzeit eine Reihe von:
sudo ssh -L PORT:IP:PORT root@IP
Dabei ist IP das Ziel eines gesicherten Computers und PORT die Ports, die ich weiterleiten möchte.
Dies liegt daran, dass ich viele Anwendungen verwende, auf die ich ohne diese Weiterleitung nicht zugreifen kann. Nachdem ich dies durchgeführt habe, kann ich durch zugreifen localhost:PORT
.
Das Hauptproblem trat jetzt auf, da ich tatsächlich 4 dieser Ports habe, die ich weiterleiten muss.
Meine Lösung besteht darin, 4 Shells zu öffnen und meinen Verlauf ständig rückwärts zu durchsuchen, um genau zu suchen, welche Ports weitergeleitet werden müssen usw., und dann diesen Befehl auszuführen - einen in jeder Shell (Passwörter usw. eingeben müssen).
Wenn ich nur so etwas tun könnte:
sudo ssh -L PORT1+PORT2+PORT+3:IP:PORT+PORT2+PORT3 root@IP
dann würde das schon richtig helfen.
Gibt es eine Möglichkeit, dies zu vereinfachen?
quelle
Genau das, was NaN beantwortet hat, geben Sie mehrere -L-Argumente an. Ich mache das die ganze Zeit. Hier ist ein Beispiel für die Weiterleitung mehrerer Ports:
Hinweis : Dies ist dasselbe, als
-L localhost:8822:REMOTE_IP_1:22
ob Sie nichts angebenlocalhost
.Jetzt können Sie damit (von einem anderen Terminal aus) Folgendes tun:
um eine Verbindung zum
REMOTE_IP_1
Port herzustellen22
und ähnlich
um eine Verbindung zum
REMOTE_IP_2
Port herzustellen22
Natürlich hindert Sie nichts daran, dies in ein Skript zu packen oder zu automatisieren, wenn Sie viele verschiedene Hosts / Ports zum Weiterleiten und an bestimmte spezifische haben.
Hoffe das hilft.
quelle
By default, anyone (even on different machines) can connect to the specified port on the SSH client machine. However, this can be restricted to programs on the same host by supplying a bind address: ssh -L 127.0.0.1:80:intra.example.com:80 gw.example.com
ssh.com/ssh/tunneling/exampleSie können die folgende Bash-Funktion verwenden (fügen Sie sie einfach zu Ihrer hinzu
~/.bashrc
):Anwendungsbeispiel:
quelle
-f
, um im Hintergrund zu laufenPersonen, die mehrere Ports über denselben Host weiterleiten, können so etwas in ihrer ~ / .ssh / config einrichten
Host all-port-forwards Hostname 10.122.0.3 User username LocalForward PORT_1 IP:PORT_1 LocalForward PORT_2 IP:PORT_2 LocalForward PORT_3 IP:PORT_3 LocalForward PORT_4 IP:PORT_4
und es wird einfach
ssh all-port-forwards
weg.quelle
jbchichoko und yuval haben tragfähige Lösungen gegeben. Aber jbchichokos Antwort ist keine flexible Antwort als Funktion, und die geöffneten Tunnel von Yuvals Antwort können nicht geschlossen werden,
ctrl+c
da sie im Hintergrund ausgeführt werden. Ich gebe meine Lösung unten, um beide Fehler zu beheben:Definieren einer Funktion in
~/.bashrc
oder~/.zshrc
:Ein Beispiel für die Ausführung der Funktion:
Ergebnis dieses Beispiels:
Sie können auf
127.0.0.1:16000~16009
dasselbe zugreifen wiehostname:6000~6009
quelle
In meinem Unternehmen benötigen sowohl ich als auch meine Teammitglieder Zugriff auf 3 Ports eines nicht erreichbaren "Ziel" -Servers. Daher habe ich einen permanenten Tunnel ( dh einen Tunnel, der unbegrenzt im Hintergrund ausgeführt werden kann, siehe Parameter
-f
und-N
) von einem erreichbaren Server zu erstellt das Ziel. In der Befehlszeile des erreichbaren Servers habe ich ausgeführt:Ich habe Benutzer verwendet,
root
aber Ihr eigener Benutzer wird funktionieren. Sie müssen das Passwort des ausgewählten Benutzers eingeben (auch wenn Sie bereits mit diesem Benutzer mit dem erreichbaren Server verbunden sind).Jetzt entspricht Port 8822 des erreichbaren Computers Port 22 des Zielcomputers (für ssh / PuTTY / WinSCP), und die Ports 9006 und 9100 auf dem erreichbaren Computer entsprechen denselben Ports des Zielcomputers (in meinem Fall hosten sie zwei Webdienste ).
quelle
Einer der Vorteile der Anmeldung bei einem Server mit Portweiterleitung besteht in der Erleichterung der Verwendung von Jupyter Notebook. Dieser Link bietet eine hervorragende Beschreibung der Vorgehensweise. Hier möchte ich eine Zusammenfassung und Erweiterung machen, auf die sich alle beziehen können.
Situation 1. Melden Sie sich von einem lokalen Computer mit dem Namen Host-A (z. B. Ihrem eigenen Laptop) bei einem Remote-Arbeitscomputer mit dem Namen Host-B an.
Dann können Sie einen Browser öffnen und Folgendes eingeben: http: // localhost: port_A / , um Ihre Arbeit auf Host-B auszuführen , aber in Host-A sehen.
Situation 2. Melden Sie sich von einem lokalen Computer mit dem Namen Host-A (z. B. Ihrem eigenen Laptop) bei einem Remote-Anmeldecomputer mit dem Namen Host-B und von dort aus mit dem Remote-Arbeitscomputer mit dem Namen Host-C an. Dies ist normalerweise bei den meisten Analyseservern an Universitäten der Fall und kann durch die Verwendung von zwei
ssh -L
verbundenen Servern erreicht werden-t
.Dann können Sie einen Browser öffnen und Folgendes eingeben: http: // localhost: port_A / , um Ihre Arbeit auf Host-C auszuführen , aber in Host-A sehen.
Situation 3. Melden Sie sich von einem lokalen Computer mit dem Namen Host-A (z. B. Ihrem eigenen Laptop) bei einem Remote-Anmeldecomputer mit dem Namen Host-B an und von dort aus mit dem Remote-Arbeitscomputer mit dem Namen Host-C und schließlich mit dem Remote-Arbeitscomputer Host-. D. D. Dies ist normalerweise nicht der Fall, kann aber irgendwann passieren. Es ist eine Erweiterung von Situation 2 und dieselbe Logik kann auf mehrere Maschinen angewendet werden.
Dann können Sie einen Browser öffnen und Folgendes eingeben: http: // localhost: port_A / , um Ihre Arbeit auf Host-D auszuführen , aber in Host-A sehen.
Beachten Sie, dass port_A, port_B, port_C, port_D Zufallszahlen sein können, mit Ausnahme der hier aufgeführten allgemeinen Portnummern . In Situation 1 können port_A und port_B identisch sein, um die Prozedur zu vereinfachen.
quelle
Ich habe loco für Hilfe bei der SSH-Weiterleitung entwickelt. Es kann verwendet werden, um die Ports 5000 und 7000 lokal auf denselben Ports gemeinsam zu nutzen:
quelle
Wenn Sie eine einfache Lösung suchen, die im Hintergrund ausgeführt wird und leicht zu beenden ist, verwenden Sie eine Steuerbuchse
quelle
Hier ist eine Lösung, die von der von Yuval Atzmon inspiriert ist.
Es hat einige Vorteile gegenüber der ursprünglichen Lösung:
Sie können es verwenden als:
Und schließlich töte sie alle mit
tnlkill
.quelle
Sie können diese zsh-Funktion verwenden (funktioniert wahrscheinlich auch mit bash) (Put it in
~/.zshrc
):Beispiele:
ashL [email protected] 6480 7690 7477
ashL [email protected] {6000..6050} # Forwards the whole range. This is simply shell syntax sugar.
quelle