You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Python sshtunnel模块连接远程服务器时持续触发密钥密码错误

解决sshtunnel连接时提示"Password is required for key"的问题
  • 验证密钥路径与文件存在性
    先打印key_file变量确认实际路径是否正确,比如:

    print(key_file)
    

    检查输出的路径是否指向正确的id_rsa文件,确认文件没有被移动、重命名或删除。

  • 确认私钥密码正确性
    用原生SSH命令测试密钥+密码是否能正常登录远程服务器:

    ssh -i C:\Users\folder\.ssh\id_rsa user@remote_ip_address
    

    输入代码中填写的密码,如果登录失败,说明密码错误,需要核对密钥的解锁密码。

  • 修复Windows下私钥文件权限
    Windows系统中,私钥文件如果权限过于开放(比如允许其他用户读取),SSH客户端会拒绝使用该密钥。修复步骤:

    1. 右键id_rsa文件 → 属性 → 安全选项卡
    2. 点击「高级」,选择「禁用继承」,然后删除所有继承的权限
    3. 点击「添加」,选择当前登录用户,只赋予「读取」权限
    4. 保存设置后重新运行代码
  • 改用paramiko加载密钥后传入sshtunnel
    绕过sshtunnel自带的密钥加载逻辑,直接用paramiko加载解密后的密钥对象:

    import os
    import sshtunnel
    from paramiko import RSAKey
    
    key_file = os.path.join('C:\\Users\\folder\\.ssh', 'id_rsa')
    # 用paramiko加载密钥并传入密码
    private_key = RSAKey.from_private_key_file(key_file, password="your_actual_password")
    
    server = sshtunnel.SSHTunnelForwarder(
        ('remote_ip_address',22),
        ssh_username="user",
        ssh_pkey=private_key,
        remote_bind_address=('127.0.0.1', 3306),
        local_bind_address=('127.0.0.1', 3306)
    )
    
  • 排查依赖版本变化
    如果近期更新了sshtunnel或paramiko包,可能导致参数逻辑变化。可以回退到之前能正常运行的版本,比如:

    pip install sshtunnel==<之前的版本号> paramiko==<对应版本号>
    

内容的提问来源于stack exchange,提问作者Shamoun Ilyas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 08:23:25