2017-11-22 10 views
1

이 없습니다, 그러나 나는 다음과 같은 오류 얻을 : 무엇을AttributeError는 'STR'개체가 어떤 속성 'public_blob'내 구글 클라우드 컴퓨팅 엔진에서 내 라즈베리 파이에 파일을 좀하고 싶습니다

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' 

을 이 오류 메시지는 의미합니까?

미리 감사드립니다.

파이썬 파일 :

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) 
+0

인증을 시도 할 때 기본적으로 실패합니다. 패스 또는 개인 키가 틀립니다. – user1767754

+0

빠른 답장을 보내 주셔서 감사합니다. 어떤 형식으로 pkey 변수에 개인 키를 제공해야합니까? 문자열 또는 파일로? – Marci

+1

@Marci,'pk = paramiko.RSAKey.from_private_key (open ("/ home/pi/dos/priv_key")); t.connect (사용자 이름 = 사용자 이름, 암호 = 암호, pkey = pk)'. 실제로 pkey 매개 변수에 전달할 PKey 객체를 만들어야합니다. – Abdou

답변

3

많은 hostkey 같은 매개 변수 pkey는, 입력 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의 사용. 나는이 희망

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

:

또한, 개인 키 파일에 암호가있는 경우, 다음과 같은 기능 paramiko.RSAKey.from_private_key에 두 번째 인수로 암호를 제공해야합니다 것을 명심하시기 바랍니다 도움이됩니다.

+0

그것은 작동합니다. 고마워요! – Marci