【问题标题】:Paramiko session scopeParamiko 会话范围
【发布时间】:2020-04-26 05:33:54
【问题描述】:

我对帕拉米科有些怀疑。如果我执行在互联网上找到的标准代码:

ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(hostname='remote_host', username='...', password='...')
// TODO
ssh.close()

假设我有某种 JDBC 连接器,我尝试连接到数据库,将下面的代码放在 TODO 部分中

ssh.connect(hostname='remote_host', username='...', password='...')
connector.connect(database_params...)
ssh.close()

我的问题是。在这种情况下,数据库服务器的客户端将是 remote_host 或我正在执行 Python 脚本的本地计算机?


或者正确的方法是使用sshtunnel?像这样:

with open_tunnel(
    ('remote_host', '22'),
    ssh_username=...,
    ssh_password=...,
    remote_bind_address=('DB_ADDRESS', 'DB_PORT')
    local_bind_address=('SOME_IP', 'SOME_PORT')
) as server:
    connector.connect(db_host='SOME_IP', db_port='SOME_PORT', ...)

这两种方法有什么区别吗?
提前致谢。

【问题讨论】:

    标签: python ssh paramiko portforwarding ssh-tunnel


    【解决方案1】:

    使用 Paramiko 或任何其他方式打开 SSH 连接,对您的数据库连接、任何其他连接、文件访问和命令执行都没有任何影响。所以你的第一个代码没有机会做你想要的。

    您想通过 SSH 连接执行的所有操作,都需要通过 Paramiko API 执行。

    这就是 open_tunnel 在内部所做的。

    对于等效的独立代码,请参阅Paramiko forward.py demo 中的forward_tunnel 函数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-07
      • 1970-01-01
      • 2011-10-16
      • 2013-07-04
      • 2012-08-28
      相关资源
      最近更新 更多