Сначала я попытался заставить ткань работать, но она продолжала запрашивать пароль.
Поэтому я пытаюсь уменьшить проблему. Возможно, было бы неплохо просто создать SSH-соединение из Python. Я обнаружил, что ткань использует parmiko для обработки SSH. Хм. Хорошо, давайте попробуем заставить пример работать.
Вот что я написал.
from ssh import *
import os
print "SSH-AGENT VARS"
print "SSH_AGENT_PID: %s " % os.environ['SSH_AGENT_PID']
print "SSH_AUTH_SOCK: %s " % os.environ['SSH_AUTH_SOCK']
a = Agent()
keys=a.get_keys()
print keys.count("192.168.1.10")
client = SSHClient()
client.load_system_host_keys()
client.connect('192.168.1.10')
В результате появляются следующие сообщения об ошибках:
% ./ssh_test.py
SSH-AGENT VARS
SSH_AGENT_PID: 26557
SSH_AUTH_SOCK: /tmp/ssh-pZHBElj26556/agent.26556
0
Traceback (most recent call last):
File "./ssh_test.py", line 18, in <module>
client.connect('192.168.1.10')
File "/usr/local/lib/python2.7/dist-packages/ssh/client.py", line 332, in connect
self._auth(username, password, pkey, key_filenames, allow_agent, look_for_keys)
File "/usr/local/lib/python2.7/dist-packages/ssh/client.py", line 493, in _auth
raise saved_exception
ssh.PasswordRequiredException: Private key file is encrypted
ssh-agent работает в моем сеансе, я могу подключиться к этому ящику по SSH, никаких проблем, он не запрашивает пароль или что-то еще.
Я предполагаю, что paramiko не может подключиться к работающему ssh-агенту по какой-то странной причине.
У кого-нибудь еще была такая проблема? Я использую Убунту 11.10
Кажется, я помню, как некоторое время назад пытался использовать Fabric и столкнулся с похожими проблемами, возможно, он какое-то время был сломан?
Я подключаюсь, просто используя имя хоста в качестве аргумента. Это согласно документации.
http://www.lag.net/paramiko/docs/paramiko.SSHClient-class.html
connect(self, hostname, port=22, username=None, password=None, pkey=None, key_filename=None, timeout=None, allow_agent=True, look_for_keys=True, compress=False)
env.user = 'my_user'
в свой fabfile? - person Not_a_Golfer   schedule 26.03.2012client.connect('192.168.1.10', password='your_passphrase')
? У меня есть ощущение, что это может помочь. - person Lev Levitsky   schedule 26.03.2012"if the private key file is encrypted, and password is None"
- person Not_a_Golfer   schedule 27.03.2012