torutkのブログ

ソフトウェア・エンジニアのブログ

Windows上でPython,paramikoでSSH

Pythonでライブラリparamikoを使ってSSH接続を行う際、Windows上で以下の問題が発生しました。

WindowsXP, ActivePython2.6, paramiko 1.7.5での問題

C:\>python
ActivePython 2.6.3.7 (ActiveState Software Inc.) based on
Python 2.6.3 (r263:75183, Oct  5 2009, 14:41:55) [MSC v.1500 32 bit (Intel)] on win32
>>> import paramiko
>>> client = paramiko.SSHClient()
>>> client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
>>> client.connect('192.168.1.1', username='torutk', password='xxxx')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "build\bdist.win32\egg\paramiko\client.py", line 283, in connect
paramiko.SSHException: No suitable address family for 192.168.1.1

この"No suitable address"エラーで調べると、Windows上での問題があるようです。問題について言及しているWebページがいくつか見つかりました。

paramikoを使うsshモジュールは動作する

paramikoをさらに簡単に使えるようにしたssh
http://plaza.rakutenco.jp/kugutsushi/diary/200806190001/
経由で
http://media.commandline.org.uk//code/ssh.txt
にあることを知り、これを入れてみると、SSHでのアクセスがエラーなく実現できました。

paramiko.SSHClientは使っておらず、paramiko.Transportを使ったものです。

>>> import ssh
>>> s = ssh.Connection('192.168.1.1', 'torutk', password='xxxx')
>>> s.execute('ls')
['Desktop\n', 'arc\n', 'backup\n', 'bin\n', 'rpm\n', 'workdir\n']
>>> s.close()