2012-05-30 2 views
3

решил дать Python попробовать в первый раз, так что извините, если ответ очевиденPython - Paramiko Получение ошибки «объект не имеет атрибута„get_fingerprint“

Я пытаюсь создать соединение SSH с помощью paramiko. . Я использую следующий код:

#!/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() 

Довольно стандартные вещи, право за исключением я получаю эту ошибку:?

./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' 

Что «ул» объект является его со ссылкой я думал, Мер должен был передать ему путь к ключу RSA, но, похоже, ему нужен какой-то объект.

ответ

9

Параметр pkey должен быть фактическим частным ключом, а не именем файла, содержащего ключ. Обратите внимание, что pkey должен быть объектом PKey, а не строкой (например, private_key = paramiko.RSAKey.from_private_key_file (private_key_filename)). Вместо pkey вы можете использовать параметр key_filename, чтобы передать имя файла напрямую.

См. documentation за connect.

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) 

Особенно полезно, если ваш закрытый ключ хранится в переменной окружения.