我正在尝试建立一个简单的SSH隧道链。
我有以下机器:
我有以下程序:
client.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()
server.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),它按预期工作。< / p>
我在本地计算机上运行client.py(CLIENT_HOST ='127.0.0.1',CLIENT_PORT = 8000),在远程计算机上运行server.py(SERVER_HOST ='',SERVER_PORT = 8001)。然后我运行PuTTY并添加一个本地SSH隧道,源端口8000和目标10.0.0.2:8001,它按预期工作。
我在远程计算机上运行client.py(CLIENT_HOST ='127.0.0.1',CLIENT_PORT = 8001),在本地计算机上运行server.py(SERVER_HOST ='',SERVER_PORT = 8002)。然后我运行PuTTY并添加一个远程SSH隧道,源端口8001和目标127.0.0.1:8002,它按预期工作。
但是,当我在本地计算机上运行client.py(CLIENT_HOST ='127.0.0.1',CLIENT_PORT = 8000)和server.py(SERVER_HOST ='',SERVER_PORT = 8002)时,运行两个PuTTY ,一个具有从源端口8000到目标10.0.0.2:8001的本地SSH隧道,另一个具有从源端口8001到目标127.0.0.1:8002的远程SSH隧道,没有任何反应。
正如我所看到的,来自client.py的消息应该被发送到本地机器的端口8000,PuTTY在那里监听并应该通过SSH将其重定向到远程机器的端口8001,PuTTY在那里监听并通过SSH重定向它到本地机器的端口8002,它应该到达server.py。
有什么问题,我该如何解决?
感谢。
答案 0 :(得分:0)
您可能需要勾选“本地端口接受来自其他主机的连接”和“远程端口执行相同操作”。
顺便说一下,netcat
是一个更有用的标准实用工具,如果它可以在您的操作系统上使用,可以尝试这种方法。