Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 属性错误:';str';对象没有属性';公共场所';_Python_Ssh_Paramiko - Fatal编程技术网

Python 属性错误:';str';对象没有属性';公共场所';

Python 属性错误:';str';对象没有属性';公共场所';,python,ssh,paramiko,Python,Ssh,Paramiko,我想从我的谷歌云计算引擎中获取一个文件到我的raspberry pi,但我得到以下错误: File "/usr/local/lib/python2.7/dist-packages/paramiko/auth_handler.py", line 212, in wait_for_response raise e AttributeError: 'str' object has no attribute 'public_blob' 这个错误消息是什么意思 提前谢谢 python文件: impo

我想从我的谷歌云计算引擎中获取一个文件到我的raspberry pi,但我得到以下错误:

  File "/usr/local/lib/python2.7/dist-packages/paramiko/auth_handler.py", line 212, in wait_for_response
raise e
AttributeError: 'str' object has no attribute 'public_blob'
这个错误消息是什么意思

提前谢谢

python文件:

import paramiko

hostname = '43.123.231.212'
password = 'passw'
username = 'dosop'
port = 22

gc_path='/home/do//assets/locations.txt'
remotepath='/home/pi/ada.txt'

t = paramiko.Transport((hostname, 22))
t.connect(username=username, password=password, pkey="/home/pi/dos/priv_key"
sftp = paramiko.SFTPClient.from_transport(t)
sftp.get(gc_path, remotepath)

参数
pkey
,很像
hostkey
,需要类型为
pkey
的值。但你似乎给它提供了一条线索。通过从
paramiko.RSAKey
创建对象,可以从私钥文件中获取
PKey
对象。以下内容应该会有所帮助:

import paramiko

hostname = '43.123.231.212'
password = 'passw'
username = 'dosop'
port = 22

gc_path='/home/do//assets/locations.txt'
remotepath='/home/pi/ada.txt'
pk = paramiko.RSAKey.from_private_key(open('/home/pi/dos/priv_key'))
t = paramiko.Transport((hostname, 22))
t.connect(username=username, password=password, pkey=pk)
sftp = paramiko.SFTPClient.from_transport(t)
sftp.get(gc_path, remotepath)
请注意,这假设您使用的是
rsa
密钥;因此使用了
paramiko.RSAKey

另外,请记住,如果您的私钥文件有密码,则需要提供密码作为函数
paramiko.RSAKey.from_private_key
的第二个参数,如下所示:

pk = paramiko.RSAKey.from_private_key(open('/home/pi/dos/priv_key'), 'password')

我希望这会有所帮助。

尝试验证时基本上失败,您的密码或私钥一定是错误的。谢谢您的快速回复。我应该以何种形式将私钥提供给pkey变量?作为字符串或文件?@Marci,从私钥(open(“/home/pi/dos/priv_key”)尝试
pk=paramiko.RSAKey‌​); t、 连接(用户名=用户名,密码=密码,pkey=pk)
。您需要实际创建一个PKey对象以传递给PKey参数。paramiko.ssh_exception.passwordrequiredeexception:私钥文件已加密您的私钥文件有密码/密码。假设您知道它是什么,您应该将此密码作为
paramiko.RSAKey.from_Private_key
函数的第二个参数提供离子。