如何链接 SSH 隧道

Posted

技术标签:

【中文标题】如何链接 SSH 隧道【英文标题】:How To Chain SSH Tunnels 【发布时间】:2013-04-10 20:06:16 【问题描述】:

我正在尝试建立一个简单的 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,PuTTY 在那里侦听,并且应该通过 SSH 将其重定向到远程机器的端口 8001,PuTTY 在那里侦听并应该通过 SSH 重定向它到本地机器的 8002 端口,它应该到达 server.py。

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

谢谢。

【问题讨论】:

【参考方案1】:

您可能需要勾选“本地端口接受来自其他主机的连接”和“远程端口也这样做”。

顺便说一句,netcat 是一个更有用的标准实用程序,如果它在您的操作系统上可用,则可以尝试这种事情。

【讨论】:

以上是关于如何链接 SSH 隧道的主要内容,如果未能解决你的问题,请参考以下文章

CobaltStrike使用-第八篇-隧道技术(socks转发ssh隧道CS转发监听器)

CobaltStrike使用-第八篇-隧道技术(socks转发ssh隧道CS转发监听器)

如何通过链接 ssh

SSH隧道tunneling端口转发

ssh隧道 学习总结

ssh隧道