我正在尝试使用 paramiko 连接到主机。我能够使用私钥通过 winscp 成功连接到主机,但脚本失败并出现以下错误
引发 SSHException(“不是有效的 {} 私钥文件”.format(tag))paramiko.ssh_exception.SSHException:不是有效的 OPENSSH 私钥文件
import paramiko
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('hostname.com', username='user', key_filename='private.ppk')
stdin, stdout, stderr = ssh.exec_command('ls')
print(stdout.readlines())
ssh.close()
Any suggestion would be appretiated,
Paramiko 是用 Python 编写的,很可能需要对密钥进行 PEM 文件编码。Winscp 和 Putty 使用 ppk,它通常用于基于 Microsoft 的 SSH 系统。Putty 附带一个工具 PuttyGen,可将 ppk 转换为 OpenSSH。
打开 PuttyGen
选择“加载”并选择要转换的 PPK 文件
菜单转换 > 导出 OpenSSH 密钥
对“您是否要保存此密钥而不使用密码?”回答“是”。这样做将以未加密的形式存储密钥,因此请非常小心,不要将其复制到不安全的位置。
输入您的新文件名和.pem后缀。
您现在拥有一个可与 OpenSSH 和 paramiko 一起使用的 PEM 编码密钥。