我想设置一个简单的SSH隧道链。如何链接SSH隧道
我有以下的机器:
- 本地机器,在10.0.0.1。
- 远程机器,在10.0.0.2。
我有以下程序:
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)在同一台机器上,它按预期工作。
我在本地机器上运行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时,一个使用从源端口8000到目的地10.0.0.2:8001的本地SSH隧道,另一个使用从源端口8001到目的地127.0.0.1:8002的远程SSH隧道,没有任何反应。
在我看来,从client.py应该将消息发送到本地机器上的8000端口,其中腻子监听,并应通过SSH重定向到远程机器的端口8001,其中腻子监听和应通过SSH将其重定向到本地机器的端口8002,它应该到达server.py。
什么是错,我该如何解决?
谢谢。