如何链接SSH隧道

时间:2013-04-17 21:29:20

标签: networking ssh ssh-tunnel

我正在尝试建立一个简单的SSH隧道链。

我有以下机器:

  1. 本地计算机,10.0.0.1。
  2. 远程计算机,10.0.0.2。
  3. 我有以下程序:

    1. 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()
      
    2. 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()
      
    3. 现在:

      1. 我在同一台机器上运行client.py(CLIENT_HOST ='127.0.0.1',CLIENT_PORT = 8000)和server.py(SERVER_HOST ='',SERVER_PORT = 8000),它按预期工作。< / p>

      2. 我在本地计算机上运行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,它按预期工作。

      3. 我在远程计算机上运行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,它按预期工作。

      4. 但是,当我在本地计算机上运行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隧道,没有任何反应。

      5. 正如我所看到的,来自client.py的消息应该被发送到本地机器的端口8000,PuTTY在那里监听并应该通过SSH将其重定向到远程机器的端口8001,PuTTY在那里监听并通过SSH重定向它到本地机器的端口8002,它应该到达server.py。

        有什么问题,我该如何解决?

        感谢。

1 个答案:

答案 0 :(得分:0)

您可能需要勾选“本地端口接受来自其他主机的连接”和“远程端口执行相同操作”。

顺便说一下,netcat是一个更有用的标准实用工具,如果它可以在您的操作系统上使用,可以尝试这种方法。