AttributeError:'str'对象没有属性'public_blob'

Mar*_*rci 2 python ssh paramiko

我想从我的谷歌云计算引擎获取一个文件到我的覆盆子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'
Run Code Online (Sandbox Code Playgroud)

这个错误信息是什么意思?

提前致谢!

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)
Run Code Online (Sandbox Code Playgroud)

Abd*_*dou 5

该参数pkey非常类似于hostkey期望值的类型PKey.但是你似乎在为它提供一个字符串.您可以PKey通过创建对象从私钥文件中获取对象paramiko.RSAKey.以下应该有所帮助:

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)
Run Code Online (Sandbox Code Playgroud)

请注意,这假设您正在使用rsa密钥; 因此使用paramiko.RSAKey.

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

pk = paramiko.RSAKey.from_private_key(open('/home/pi/dos/priv_key'), 'password')
Run Code Online (Sandbox Code Playgroud)

我希望这有帮助.