Python-Paramiko 错误:'RSAKey' 对象不可迭代'

Posted

技术标签:

【中文标题】Python-Paramiko 错误:\'RSAKey\' 对象不可迭代\'【英文标题】:Python-Parmiko Error: 'RSAKey' object is not iterable'Python-Paramiko 错误:'RSAKey' 对象不可迭代' 【发布时间】:2017-03-22 23:44:36 【问题描述】:

我通过sudo ssh-keygen -t rsa -b 4096 创建了一个 RSA 密钥对并复制到.ssh 文件夹。我正在使用 Python paramiko 包。我的代码是:

import paramiko
k = paramiko.RSAKey.from_private_key_file('/home/username/.ssh/id_rsa', password='mypassphrase')
s = paramiko.SSHClient()
s.set_missing_host_key_policy(paramiko.AutoAddPolicy())
conn = s.connect('remote_computer', username ='username', port=22, key_filename =k)
command = 'sudo python ~/pythonscript.py'
(stdin, stdout, stderr) = s.exec_command(command)
s.close()

但是当我尝试运行代码时,我收到以下错误和回溯:

Traceback (most recent call last):
File "pythonparamikoscript.py", line 6, in <module>
conn = s.connect('remote_computer', username ='username', port=22, key_filename =k)
File "/usr/lib/python2.7/dist-packages/paramiko/client.py", line 307, in connect
look_for_keys, gss_auth, gss_kex, gss_deleg_creds, gss_host)
File "/usr/lib/python2.7/dist-packages/paramiko/client.py", line 441, in _auth
for key_filename in key_filenames:
TypeError: 'RSAKey' object is not iterable

感谢您的帮助,因为这让我很绝望。

【问题讨论】:

【参考方案1】:

connect() 接受不同的参数:

pkey (PKey) 这是您应该分配密钥的地方 key_filename (str) 这只是一个字符串,其中包含您的密钥位置。

这样跑

conn = s.connect('remote_computer', username ='username', port=22, pkey=k)

应该做的工作。

【讨论】:

@MrMeeseeks 如果这解决了您的问题,您应该将此答案标记为解决方案。

以上是关于Python-Paramiko 错误:'RSAKey' 对象不可迭代'的主要内容,如果未能解决你的问题,请参考以下文章

Python-paramiko远程传输使用

python-paramiko对远程服务器终端的操作

paramiko

linux自动化建互信

Ansible安装以及初步使用

APT安装MySQL NDB Cluster