无法通过Pinggy TCP SSH隧道连接服务器的问题排查
Pinggy隧道无法转发Python Socket服务器流量的问题
我尝试在不同网络的客户端与服务器间建立TCP通信,因无公网服务器且不想设置端口转发,选择了Pinggy这类TCP隧道服务。
通过SSH会话创建隧道的命令如下:
ssh -p 443 -o StrictHostKeyChecking=no -o ServerAliveInterval=30 -R0:localhost:5000 tcp@a.pinggy.io
我编写了简单的server.py:
import socket server = socket.socket(socket.AF_INET, socket.SOCK_STREAM) server.bind(('127.0.0.1', 5000)) server.listen() while True: conn, addr = server.accept() print(f"Connection attempt: {addr}")
以及client.py:
import socket client = socket.socket(socket.AF_INET, socket.SOCK_STREAM) client.connect(("...a.free.pinggy.link", 33143))
客户端的IP和端口由隧道服务提供,该服务会将其服务器的流量转发至我的localhost:5000
我先运行server.py再运行client.py,客户端无报错结束,但服务器从未检测到连接请求。每次连接Pinggy隧道时,其界面都会正确显示并增加连接数,说明隧道配置部分正常,但流量似乎未转发到服务器。
已排查的情况:
- 取消隧道后本地运行代码正常,说明代码本身无问题;
- 使用ngrok(非SSH方式的同类服务)可正常实现通信;
- Pinggy曾成功转发本地Minecraft服务器的TCP连接,因此SSH隧道方式本身不应存在问题;
- 临时关闭防火墙后问题仍未解决。
为何Pinggy能转发Minecraft服务器流量,却无法适配Python Socket服务器?
内容的提问来源于stack exchange,提问作者jawidNIdw
相关产品推荐
相关产品推荐

