Mehrere Reverse-SSH-Tunnel mit einem Port


7

Ich kann umgekehrte SSH-Verbindungen von mehreren Remote-Systemen auf einem einzelnen Server über einen Port für jede Verbindung akzeptieren:

Remote A: ssh -fN -R5000:localhost:22 user@server-ip -p22
Remote B: ssh -fN -R5001:localhost:22 user@server-ip -p22
Remote C: ssh -fN -R5002:localhost:22 user@server-ip -p22

Ich kann bei Bedarf von meinem lokalen Client aus auf diese Systeme zugreifen:

Access Remote A: ssh root@server-ip -p5000
Access Remote B: ssh root@server-ip -p5001

Dies erfordert die Weiterleitung eines Ports pro Remote-System auf dem Server. Wenn mehr als 100 Fernbedienungen eine Verbindung herstellen, habe ich andere Optionen als das Öffnen von mehr als 100 Ports in der Server-Firewall und das statische Zuweisen jeder Fernbedienung zu einem Port wie oben? Mein Ziel ist es, mehreren Fernbedienungen die Möglichkeit zu geben, bei Bedarf Tunnel zu erstellen, in denen ich abfragen kann, wer verbunden ist.

Ich fand heraus, dass sslh ein Multiplexer ist, der zwischen Verkehr auf einem einzelnen Port basierend auf dem Protokoll unterscheiden kann, aber dies gilt nur für verschiedene Protokolle, z. ssl / ssh. Gibt es eine Lösung, die mehrere Tunnel an einem einzigen Port zulässt?

Beispiel:

Remote A: ssh -fN -R5000:localhost:22 user@server-ip -p22 -identifier abc123
Remote B: ssh -fN -R5000:localhost:22 user@server-ip -p22 -identifier def456
access Remote A: ssh root@server-ip -p5000 -identifier abc123
access Remote B: ssh root@server-ip -p5000 -identifier def456

6
Sie haben Ihre geschäftlichen Anforderungen nicht erklärt, aber es sieht für mich so aus, als hätten Sie sich sshüber das hinaus entwickelt, wofür es entwickelt wurde. Sie brauchen wirklich ein richtiges VPN.
MadHatter

Antworten:


3

Ich habe das gleiche Problem wie Sie und bin zu dem Zeitpunkt nur zu einer möglichen Antwort gekommen. Mein Szenario unterscheidet sich ein wenig von Ihrem, da ich nur einen aktiven SSH-Tunnel benötige, aber alle Clients müssen bereit sein, bei Bedarf eine Verbindung herzustellen.

Ich denke, man könnte ein einfaches Client / Server-Protokoll erstellen, um alle Clients zu verwalten und eine Liste zu erstellen. Der Benutzer könnte dann einen der Clients auswählen, um den umgekehrten Tunnel zu erstellen. Dies würde einen anderen offenen Port anstelle des SSH-Servers erfordern, aber bei Verwendung eines Thread-Servers könnte man für dieses sekundäre Protokoll verschiedene Clients unter demselben Port abhören ().

Ich arbeite noch an einer Lösung (ich werde wahrscheinlich das implementieren, was ich gerade geschrieben habe), aber in Ihrem Fall sollten Sie die maximale Anzahl von Clients festlegen, die gleichzeitig verbunden sind, und diese Anzahl von Ports konfigurieren. Da es sich bei meiner nur um eine kleine Linux- "Unterstützung" für eingebettete Geräte handelt, kann ich sowieso immer nur an einem Gerät arbeiten, sodass ich nur 1 Gerät benötige.

Eine klügere Idee wäre, den Client über das Aux-Protokoll zu informieren, an welchem ​​Server-Port der Reverse-Tunnel angeschlossen werden soll.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.