最初にファブリックを機能させようとしましたが、パスワードを何度も要求されました。
だから私は問題を減らそうとしています。おそらく、Python から SSH 接続を作成するだけでよい POC になるでしょう。fabric が SSH 処理に parmiko を使用していることを発見しました。うーん。では、例を動かしてみましょう。
これが私が書いたものです。
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-agent に接続できないと推測しています。
他の誰かがこのような問題を抱えていましたか? Ubuntu 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)