我想設置一個簡單的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。
什麼是錯,我該如何解決?
謝謝。