You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python/SSH实现远程TCP端口转发至本地并接收数据?

问题:远程TCP端口转发至本地未接收数据的配置缺失分析

部署架构与需求

设备持续尝试连接远程服务器的指定已知TCP端口,该远程服务器仅开放此TCP端口,无其他服务。需求是将远程服务器上的该端口转发至本地PC,并在本地启动TCP Server读取设备发送的数据。补充说明:在远程服务器直接启动TCP Server可正常接收设备数据,但需要通过本地控制连接转发。

现有尝试

  • SSH命令方式:执行命令 ssh -N -R 10000:localhost:10000 username@hostname,同时在本地通过Python Socket或Hercules工具模拟TCP Server监听10000端口,但未收到任何数据。
  • Python sshtunnel代码方式:编写如下代码但未生效:
from sshtunnel import SSHTunnelForwarder
import socket

SSH_SERVER = 'hostname'
SSH_USERNAME = 'ubuntu'
SSH_PASSWORD = 'password'
PORT = 10_000

with SSHTunnelForwarder(ssh_address_or_host=SSH_SERVER,
                        ssh_username=SSH_USERNAME,
                        ssh_password=SSH_PASSWORD,
                        remote_bind_address=('0.0.0.0', PORT),
                        local_bind_address=('127.0.0.1', PORT),
                        ) as server:
    with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
        s.bind(('127.0.0.1', PORT))
        s.listen(1)
        conn, addr = s.accept()
        with conn:
            print(f"Connected by {addr}")
            data = conn.recv(128)
            print(data)
  • 设备模拟器代码:为最小化验证,使用如下代码模拟设备发送数据:
import socket

SSH_SERVER = 'hostname'
PORT = 10_000

with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
    s.connect((SSH_SERVER, PORT))
    s.sendall(b"Hello, world")

期望在本地代码的print(data)中看到b"Hello, world"输出,请问缺少什么配置?


内容的提问来源于stack exchange,提问作者Rami Hassan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 06:03:19