繁体   English   中英

通过 SSH 和 go 连接到一个主机到另一个使用 ssh 隧道

[英]Connect to a host via SSH and go to another with ssh tunnel

下面的代码(main.py)实现了通过SSH访问主机,并为127.0.0.1访问的IP创建隧道:

import paramiko
from sshtunnel import SSHTunnelForwarder
from paramiko import SSHClient

class SSH:
    def __init__(self):
        self.ssh = SSHClient()
        self.ssh.load_system_host_keys()
        self.ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
        self.ssh.connect(hostname='127.0.0.1',port='10022',username='root',password='root')

        def exec_cmd(self,cmd):
            stdin,stdout,stderr = self.ssh.exec_command(cmd)
            if stderr.channel.recv_exit_status() != 0:
                print (stderr.read())
            else:
                print (stdout.read())


server = SSHTunnelForwarder(
    '192.168.100.10',
    ssh_username="root",
    ssh_password="root",
    remote_bind_address=('127.0.0.1', 22),
    local_bind_address=('0.0.0.0', 10022)
)

server.start()

if __name__ == '__main__':
    ssh = SSH()
    stdin,stdout,stderr = ssh.ssh.exec_command("hostname")
    retorno = stdout.read()
    print (retorno)

server.stop()

我正在尝试访问特定机器,为此,出于网络原因,我必须首先访问机器。

在 Python 中,我运行 main.py 以在初始机器上执行 SSH,然后为另一台机器创建一个隧道,管理在其上执行远程命令。

----------------------------------------------------------------------
                            |
-------------+              |    +----------+               +---------+
      HOST   |              |    |   HOST   |               |   HOST  |
    MAIN.PY  | -- SSH ----> |    |  INITIAL | -- TUNNEL --> |  WANTED |
-------------+              |    +----------+               +---------+
                            |
----------------------------------------------------------------------

Putty 访问的拓扑是:访问初始连接(您为其创建了网络规则的那个),然后对另一台机器执行 SSH 命令,到达所需的机器。

如上面代码所述,我只能访问第一台主机。 有谁能够帮我?

我做了以下更改:

    server = SSHTunnelForwarder(
    '192.168.1.1',
    ssh_username="teste2",
    ssh_password="teste2",
    remote_bind_address=('<Destination HOST IP>', 22),
    local_bind_address=('127.0.0.1', 10022) # Here you leave the loopback ip
)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM