使用Paramiko进行SSH密钥认证时触发PasswordRequiredException错误求助
解决方案
1. 转换私钥格式为PEM
从SSH日志可以看到私钥是OpenSSH格式(type 0),部分旧版Paramiko对无口令的OpenSSH格式密钥解析存在bug。执行以下命令转换为PEM格式:
ssh-keygen -p -m PEM -f /Users/aptuz/Downloads/integra_rsa
执行后按提示直接回车(原密钥无口令),完成格式转换后再用原代码测试。
2. 显式传递空口令参数
即使私钥无口令,给from_private_key_file显式传入password='',避免Paramiko内部逻辑误判密钥加密:
pkey = paramiko.RSAKey.from_private_key_file(key_path, password='') ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) ssh.connect('host', username='xxxxx', pkey=pkey)
3. 升级Paramiko版本
旧版本Paramiko对OpenSSH格式密钥的支持不完善,升级到最新稳定版:
pip install --upgrade paramiko
4. 尝试自动加载密钥(可选)
跳过手动指定私钥,让Paramiko自动加载系统默认路径的密钥,适配部分特殊服务器:
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) ssh.connect('host', username='xxxxx')
内容的提问来源于stack exchange,提问作者Sagar
相关产品推荐
相关产品推荐

