Ich habe ein Gerät mit dem Internet verbunden, aber es befindet sich hinter einem NAT, was bedeutet, dass ich von außerhalb des Netzwerks nicht direkt per SSH darauf zugreifen kann. Ich habe bereits herausgefunden, dass dieses Problem durch Reverse-SSH-Tunneling umgangen werden kann.
Jetzt möchte ich auf diesem Gerät einen Netcat-Serverprozess ausführen, der wiederum von außerhalb des Netzwerks zugänglich ist. Wie gehe ich dabei vor?
Antwort1
Ich habe es geschafft, das selbst herauszufinden. Es scheint, dass SSH-Tunneling im Grunde Portweiterleitung ist. Ich habe den folgenden Code auf dem Server hinter dem NAT ausgeführt
ssh -N -R 4321:localhost:1234 user@client &
Dadurch wird der Tunnel eingerichtet, der den Verkehr von client:4321
nach leitet server:1234
, wobei &
er im Hintergrund ausgeführt wird. Immer noch auf dem Server habe ich dann Folgendes ausgeführt:
ncat -lk -c "python myscript.py" localhost 1234 &
Dadurch wird der Netcat-Prozess gestartet myscript.py
. Jetzt kann ich von meinem Client aus über Netcat eine Verbindung zum Server herstellen
nc localhost 4321
(Hatte ich nicht ncat
auf meinem Client, aber nc
es hat auch funktioniert. Mein tatsächlicher Anwendungsfall war, die socket
Bibliothek in Python zum Verbinden zu verwenden, was genauso funktioniert hat)