我正在尝试建立一个简单的 SSH 隧道链。
我有以下机器:
- 本地机器,位于 10.0.0.1。
- 远程机器,位于 10.0.0.2。
我有以下程序:
客户端.py:
import socket CLIENT_HOST = [...] CLIENT_PORT = [...] sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) sock.connect((CLIENT_HOST, CLIENT_PORT)) sock.send('test') sock.close()
服务器.py:
import socket SERVER_HOST = [...] SERVER_PORT = [...] server = socket.socket(socket.AF_INET, socket.SOCK_STREAM) server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) server.bind((SERVER_HOST, SERVER_PORT)) server.listen(1) client = server.accept()[0] print client.recv(1024) client.close() server.close()
现在:
我在同一台机器上运行 client.py (CLIENT_HOST='127.0.0.1', CLIENT_PORT=8000) 和 server.py (SERVER_HOST='', SERVER_PORT=8000),它按预期工作。
我在本地机器上运行 client.py (CLIENT_HOST='127.0.0.1', CLIENT_PORT=8000),在远程机器上运行 server.py (SERVER_HOST='', SERVER_PORT=8001)。然后我运行 PuTTY 并使用源端口 8000 和目标端口 10.0.0.2:8001 添加本地 SSH 隧道,它按预期工作。
我在远程机器上运行 client.py (CLIENT_HOST='127.0.0.1', CLIENT_PORT=8001),在本地机器上运行 server.py (SERVER_HOST='', SERVER_PORT=8002)。然后我运行 PuTTY 并使用源端口 8001 和目标端口 127.0.0.1:8002 添加远程 SSH 隧道,它按预期工作。
但是,当我在本地计算机上运行 client.py (CLIENT_HOST='127.0.0.1', CLIENT_PORT=8000) 和 server.py (SERVER_HOST='', SERVER_PORT=8002) 并运行两个 PuTTY,一个使用本地 SSH从源端口 8000 到目标 10.0.0.2:8001 的隧道,以及从源端口 8001 到目标 127.0.0.1:8002 的远程 SSH 隧道,没有任何反应。
正如我所看到的,来自 client.py 的消息应该发送到本地机器的端口 8000,PuTTY 在那里侦听,并且应该通过 SSH 将其重定向到远程机器的端口 8001,PuTTY 在那里侦听并应该通过 SSH 将其重定向到本地机器的端口 8002,它应该到达 server.py。
出了什么问题,我该如何解决?
谢谢。