Owa*_*mad 3 python ssh paramiko
我正在尝试使用以下Spinet连接到服务器
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ip = ['x.x.x.x']
key_file = "/Users/user/.ssh/id_rsa"
key = paramiko.RSAKey.from_private_key_file(key_file)
ssh.load_system_host_keys()
ssh.connect(ips, port=22, username='XYZ', pkey=key, timeout=11)
Run Code Online (Sandbox Code Playgroud)
但我收到一个错误:
不是有效的RSA私钥文件
Mar*_*ryl 12
最新版本的 OpenSSH(7.8 及更高版本)默认以新的OpenSSH 格式生成密钥,其开头为:
-----BEGIN OPENSSH PRIVATE KEY-----
Run Code Online (Sandbox Code Playgroud)
自2.7.1 (2019-12-09) 版本以来,Paramiko完全支持该格式。
如果您坚持使用旧版本的 Paramiko,您可以使用ssh-keygen将密钥转换为经典的OpenSSH 格式:
ssh-keygen -p -f file -m pem -P passphrase -N passphrase
Run Code Online (Sandbox Code Playgroud)
(如果密钥未使用密码加密,请使用""代替passphrase)
对于 Windows 用户:请注意,ssh-keygen.exe现在 Windows 10 中内置了它。对于旧版本的 Windows ,可以从 Microsoft Win32-OpenSSH 项目下载。
在 Windows 上,您还可以使用 PuTTYgen(来自PuTTY 包):
如果您使用 来创建新密钥ssh-keygen,只需添加-m PEM即可以经典格式生成新密钥:
ssh-keygen -m PEM
Run Code Online (Sandbox Code Playgroud)
小智 6
我遇到了类似的情况,而ssh-keygen帮了我大忙。您应该复制id_rsa并使用ssh-keygen将其转换为RSA类型。
要将“ BEGIN OPENSSH私钥”转换为“ BEGIN RSA私钥”
ssh-keygen -p -m PEM -f ~/.ssh/id_rsa
Run Code Online (Sandbox Code Playgroud)