本地板端IP:192.168.x.x
服务器IP:a.b.c.d
服务器账号:user
密码:xyz
Win+R,打开CMD,输入命令:
ssh -N -R 127.0.0.1:2222:192.168.x.x:22 ++++user@a.b.c.d++++
本地电脑将192.168.x.x转发到服务器,这个窗口保持开启。
服务器上输入下述命令,将容器隧道转发到宿主机
setsid nohup python3 - >/tmp/rsboard-docker-proxy.log 2>&1 << 'PY' &
import select, socket, threading
LISTEN = ("172.18.0.1", 2222)
TARGET = ("127.0.0.1", 2222)
def pipe(a, b):
try:
while True:
r, _, _ = select.select(a, b, \[\], \[\], 3600)
if not r:
continue
for s in r:
data = s.recv(65536)
if not data:
return
(b if s is a else a).sendall(data)
except OSError:
return
finally:
for s in (a, b):
try:
s.close()
except OSError:
pass
def handle(client):
try:
upstream = socket.create_connection(TARGET, 10)
except OSError:
client.close()
return
pipe(client, upstream)
srv = socket.socket()
srv.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
srv.bind(LISTEN)
srv.listen(32)
while True:
c, _ = srv.accept()
threading.Thread(target=handle, args=(c,), daemon=True).start()
PY
转发进程没在跑的时候,把那一整段(从 setsid 到最后一行单独的 PY)粘贴到服务器终端,回车即可。