无法使用 python + sshtunnel 建立 SSH 隧道

Can't establish an SSH tunnel with python + sshtunnel

提问人:Dmitry Grekov 提问时间:11/15/2023 最后编辑:Dmitry Grekov 更新时间:11/16/2023 访问量:60

问:

我正在尝试使用以下代码建立到跳转服务器的 SHH 隧道:

import sshtunnel

server = sshtunnel.SSHTunnelForwarder(
    ('jump host', jump_port),  
    ssh_username = 'my_user_name',
    ssh_pkey = '~/.ssh/id_rsa',  
    ssh_private_key_password = 'my private key pwd',  
    remote_bind_address = ('remote_host', remote_port),  
    local_bind_address = ('localhost', local_port)
    )

但是反复出现错误:

| ERROR   | Password is required for key C:\Users\<my_local_user_name>/.ssh\id_rsa

我已经检查了几个类似的问题并尝试了建议的解决方案,但还没有运气。

我确定我的 RSA 密钥文件和密码都是正确的。 我已经用以下代码检查了这一点:

import paramiko
pkey='C:/Users/<my_local_user_name>/.ssh/id_rsa'
key=paramiko.RSAKey.from_private_key_file(pkey, 'my private key pwd')

它工作并成功创建对象。key

我还检查了代码,并找到了触发此类错误消息的唯一位置:sshtunnel

enter image description here

据我了解,在 1304 行中对 的这个调用应该像我上面的直接调用一样工作得很好,但由于某些原因它触发了 here。pkey_class.from_private_key_fileparamiko.RSAKey.from_private_key_filePasswordRequiredException

我还检查了 paramiko 源代码,发现只有在密钥文件加密且密码为 None 时才会引发此异常,我认为这不是我的情况,因为我正确指定了密码。

传球也无济于事。allow_agent = True

作为对象传递也无济于事。ssh_pkeyparamiko.RSAKey

所以现在我完全迷失了......

有什么想法吗?

PS:我通过 Jupiter Notebook 使用 Python 3,但纯 Python 3 也不起作用。

PPS:跳转服务器和公钥文件都没问题,因为我使用 DBeaver 通过这个跳转服务器成功连接到我的数据库

python ssh rsa ssh隧道

评论


答:

-1赞 Christoph Schwalbe 11/15/2023 #1

您正在使用的库似乎有问题:https://pypi.org/project/sshtunnel/

尝试仅将其用作 CLI 工具。 在那里可以检查 ssh_key + 密码,如果这有效,那么您就有了解决方案。

如果问题仅与您当前的代码设置有关,我建议打开一个问题和库 github 位置。

评论

0赞 Dmitry Grekov 11/16/2023
Christoph Schwalbe 感谢您的想法,还没有使用 python 的 CLI,也不知道该怎么做,所以首先会尝试让它作为一个库工作。