У меня есть устройство, подключенное к Интернету, но оно находится за NAT, что означает, что я не могу напрямую подключиться к нему по ssh из-за пределов сети. Я уже понял, что обратное SSH-туннелирование может обойти эту проблему.
Теперь я хочу запустить процесс сервера netcat на этом устройстве, снова доступном извне сети. Как мне это сделать?
решение1
Мне удалось разобраться с этим самостоятельно. Похоже, что ssh-туннелирование — это по сути переадресация портов. Я запустил следующий код на сервере за NAT
ssh -N -R 4321:localhost:1234 user@client &
это устанавливает туннель, который направляет трафик из client:4321
в server:1234
, с , чтобы &
запустить его в фоновом режиме. Оставаясь на сервере, я затем запустил:
ncat -lk -c "python myscript.py" localhost 1234 &
который запускает процесс netcat myscript.py
. Теперь я могу подключиться к серверу с моего клиента через netcat
nc localhost 4321
(У меня не было ncat
на клиенте, но nc
это тоже сработало. Фактически я использовал socket
библиотеку в Python для подключения, что сработало так же)