1

以下のスクリプトを使用して、ファブリック経由でAmazonEC2に接続しようとしています。しかし、どうすれば解決できるかわからないという問題に直面しています。

import os
from fabric.api import run, env, local, cd

WORK = os.getenv('HOME') + '/Work/myproject/'

env.user = 'ubuntu'
env.hosts = [
    '128.248.268.288'
]
env.key_filename = [
    '%s/aws/myproject.pem' % WORK
]

def deploy():
    print("Executing on %(host)s as %(user)s" % env)
    with cd('/sites/myproject.com/code/'):
        run('ls')

これはトレースバックです。問題を解決する方法がわかりません。

Traceback (most recent call last):
  File "/Library/Python/2.6/site-packages/fabric/main.py", line 540, in main
    commands[name](*args, **kwargs)
  File "/Users/mickeyckm/Work/myproject/codes/giivee/fabfile.py", line 18, in deploy
    run('ls')
  File "/Library/Python/2.6/site-packages/fabric/network.py", line 391, in host_prompting_wrapper
    return func(*args, **kwargs)
  File "/Library/Python/2.6/site-packages/fabric/operations.py", line 422, in run
    channel = connections[env.host_string]._transport.open_session()
  File "/Library/Python/2.6/site-packages/fabric/network.py", line 65, in __getitem__
    self[real_key] = connect(user, host, port)
  File "/Library/Python/2.6/site-packages/fabric/network.py", line 140, in connect
    client.load_system_host_keys()
  File "/Library/Python/2.6/site-packages/paramiko/client.py", line 151, in load_system_host_keys
    self._system_host_keys.load(filename)
  File "/Library/Python/2.6/site-packages/paramiko/hostkeys.py", line 155, in load
    e = HostKeyEntry.from_line(line)
  File "/Library/Python/2.6/site-packages/paramiko/hostkeys.py", line 67, in from_line
    key = RSAKey(data=base64.decodestring(key))
  File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/base64.py", line 321, in decodestring
    return binascii.a2b_base64(s)
binascii.Error: Incorrect padding

任意のヘルプ/ヒントをいただければ幸いです。

乾杯、ミッキー

4

3 に答える 3

5

binasciiモジュールが原因で不正なパディングエラーが発生した場所をいくつか見ました。これは主に、渡す文字列に余分な空白文字が含まれている場合でした。

>>> import binascii
>>> binascii.a2b_base64('a')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
binascii.Error: Incorrect padding

あなたの場合、それはあなたがあなたのenvオブジェクトに設定した様々なプロパティです。キーファイルの場所に対してこのようなことを行い、それが機能するかどうかを確認します。

filelocation = os.path.join(WORK,'aws/myproject.pem')
env.key_filename = [filelocation]
于 2011-02-21T08:54:36.367 に答える
5

〜/ .ssh/known_hostsファイルを見てください。エントリが重複しているか、他の方法で破損している行が含まれている可能性があります。

于 2011-08-29T17:43:52.250 に答える
0

同様の問題が発生し、.ssh/known_hostsファイルの破損まで追跡しました。

したがって、.bashrcに追加しました

alias deploy='mv ~/.ssh/known_hosts ~/.ssh/known_hosts.tmp; fab <myfabscript>; mv ~/.ssh/known_hosts.old ~/.ssh/known_hosts'

(明らかに、適切なファブリックスクリプトをどこに<myfabscript>配置するか)そして、「デプロイ」を実行するだけですべてが正常に機能するようになりました。

于 2012-03-27T14:49:13.763 に答える