Wie kann ich beim Herstellen von SSH-Verbindungen einen lokalen Port angeben?

11

Ich habe zwei Server in IDC gehostet. Ich kann nur die Ports 20/21/22/23/3389 / 33101-33109 verwenden, um Verbindungen zwischen zwei Servern herzustellen. Das IDC-Netzwerkgerät blockiert alle anderen Pakete, deren Quell- oder Zielport nicht in der Liste / dem Bereich 20/21/22/23/80/3389 / 33101-33109 enthalten ist. Der Quellport von SSH ist jedoch zufällig.

Mit dem Befehl kann man leicht einen Remote-Port angeben.ssh username@server -p remote_port

Gibt es also einen sshBefehlsparameter oder eine andere Möglichkeit, einen lokalen Quellport anzugeben, damit ich beispielsweise Port 33101 zum Herstellen der SSH-Verbindung verwenden kann?

Meine Netzwerktopologie sieht folgendermaßen aus:
Netzwerktopologie

fajin yu
quelle

Antworten:

2

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 iptablesSuite 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 sshBefehl 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 -DOption 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.

LL3
quelle