2012-05-30 3 views
3

대답은 명백한 경우 파이썬에게 정말 미안 처음으로 시도를 선물하기로 결정파이썬 - Paramiko 얻기 오류 "개체가 어떤 속성이 없다"get_fingerprint "

내가 paramiko를 사용하여 ssh 연결을 만들려고 해요. .?

./test.py 
Traceback (most recent call last): 
File "./test.py", line 10, in <module> 
ssh.connect("somehost", username="myName", pkey="/home/myName/.ssh/id_rsa.pub") 
File "/home/lib/python2.7/site-packages/paramiko/client.py", line 327, in connect 
self._auth(username, password, pkey, key_filenames, allow_agent, look_for_keys) 
File "/home/lib/python2.7/site-packages/paramiko/client.py", line 418, in _auth 
self._log(DEBUG, 'Trying SSH key %s' % hexlify(pkey.get_fingerprint())) 
AttributeError: 'str' object has no attribute 'get_fingerprint' 

무엇 "STR"개체가이 참조 내가 생각 : 나는이 오류를 받고 있어요 제외하고 오른쪽

#!/home/bin/python2.7 

import paramiko 
ssh = paramiko.SSHClient() 
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) 

ssh.connect("somehost.com", username="myName", pkey="/home/myName/.ssh/id_rsa.pub") 
stdin, stdout, stderr = ssh.exec_command("ls -l") 

print stdout.readlines() 
ssh.close() 

예쁜 표준 재료 : 나는 아래의 코드를 사용하고 있습니다 메르 ely 그것에게 RSA 열쇠에 경로를 전달해야했지만 그것은 어떤 물건을 원하고있는 것으로 보인다.

답변

9

pkey 매개 변수는 키가 들어있는 파일의 이름이 아닌 개인 키 여야합니다. pkey는 문자열이 아닌 PKey 객체 여야합니다 (예 : private_key = paramiko.RSAKey.from_private_key_file (private_key_filename)). pkey 대신 key_filename 매개 변수를 사용하여 파일 이름을 직접 전달할 수 있습니다.

connect에 대해서는 documentation을 참조하십시오.

0

당신은 문자열로 개인 키가있는 경우, 수있는이 파이썬 3+에

from io import StringIO 
ssh = paramiko.SSHClient() 

private_key = "you-private-key-here" 
pk = paramiko.RSAKey.from_private_key(private_key)) 

ssh.connect('somehost.com', username='myName', pkey= pk) 

개인 키는 환경 변수에 저장되어있는 경우 특히 유용합니다.

관련 문제