Für einmalige oder ohnehin gelegentliche Situationen ist der ProxyCommand-Ansatz leicht sehr praktisch.
Wenn Sie jedoch mehrere gleichzeitige Verbindungen benötigen oder diesen Befehl häufig für die tägliche Arbeit verwenden müssen, können Sie stattdessen auch eine NAT-Regel (Network Address Translation) auf Ihrem Server festlegen.
Dies erfordert (normalerweise root
) Superuser- Zugriff auf Ihrem Server, um zuerst die eine einzige NAT-Regel anzuwenden. Beachten Sie, dass es möglicherweise überhaupt nicht erlaubt (oder effektiv) ist, die NAT-Regel anzuwenden, selbst wenn Sie Superuser-Zugriff haben, wenn Ihr "Server" tatsächlich ein Container (wie ein Docker-Server) anstelle eines Computers ist.
Wenn Sie von einem typischen Linux-System mit der iptables
Suite sprechen , könnte die NAT-Regel, die auf Ihrem Server1 für Ihren Beispielfall angewendet werden soll, wie folgt lauten:
iptables -t nat -I POSTROUTING -d <server2-ip-address> -p tcp --dport <server2-port> -j SNAT --to :33101-33109
Dieser Befehl weist den Linux-Kernel an, alle Verbindungen zum Port Server2-Port der Server2-IP-Adresse herzustellen , um ihn über einen Quellport zu löschen, der im Bereich 33101-33109 ausgewählt ist, der zu diesem Zeitpunkt verfügbar ist.
Sobald diese Regel eingeführt ist, stellen Sie einfach wie gewohnt eine Verbindung zu Ihrem Server2 her:
ssh username@server2 -p remote_port
Sie können denselben ssh
Befehl auch so oft gleichzeitig verwenden, wie Sie möchten, sofern in dem in der NAT-Regel angegebenen Bereich Ports verfügbar sind.
Beachten Sie jedoch, dass ein netstat
(oder ein gleichwertiger Befehl), der auf Ihrem Server ausgeführt wird, die lokale Adresse der Verbindung als unveränderte , zufällig ausgewählte Quellportnummer meldet , obwohl der tatsächliche Datenverkehr, der an Ihren Server2 gesendet wird, die geänderte Quellportnummer trägt .
Um die NAT-Regel rückgängig zu machen, ist der Befehl bis auf eine -D
Option anstelle von identisch -I
.
Die automatische Anwendung der NAT-Regel beim Booten hängt davon ab, welche Linux-Distribution auf Ihrem Server vorhanden ist und ob bereits eine Firewall-Konfiguration vorhanden ist oder nicht.
Ich habe keine Erfahrung mit BSD-ähnlichen Systemen, aber ich vertraue darauf, dass es ein Äquivalent gibt.