Python Paramiko会话范围

Python Paramiko会话范围,python,ssh,paramiko,portforwarding,ssh-tunnel,Python,Ssh,Paramiko,Portforwarding,Ssh Tunnel,我对帕拉米科有些怀疑。如果我执行internet中的标准代码: ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) ssh.connect(hostname='remote_host', username='...', password='...') // TODO ssh.close() 假设我有某种JDBC连接器,我尝试连接到数据库,将下面的代码放在TODO部分中 ssh.

我对帕拉米科有些怀疑。如果我执行internet中的标准代码:

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()
我的问题是。在这种情况下,数据库服务器的客户端将是执行Python脚本的
远程\u主机
或我的本地机器


或者正确的方法是使用
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', ...)
这两种方法有什么区别吗?

提前感谢。

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

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

这就是它的内在作用


有关等效的独立代码,请参阅中的
forward\u tunnel
函数。

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

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

这就是它的内在作用

有关等效的独立代码,请参阅中的功能