2013-03-29 15 views
8

ファブリックを使用してWindows Azureインスタンスに接続しようとしていますが、コマンドを実行するためにssh接続を設定していますが、ファブリックはパスワードを要求し続けます。ファブリックはSSH接続を使用してパスワードを要求し続ける

これは私のファブリックファイルです:それは私が入力したにも関わらず、ユーザのパスワードを要求し続ける、

fab -f fabfile.py azure1 what_is_my_name 

または

fab -k -f fabfile.py -i azure.key -H [email protected]:60770 -p password what_is_my_name 

しかし、何も働いていない:私のようにそれを実行

def azure1(): 
    env.hosts = ['host.cloudapp.net:60770'] 
    env.user = 'adminuser' 
    env.key_filename = './azure.key' 

def what_is_my_name(): 
    run('whoami') 

それは正しく。

Executing task 'what_is_my_name' 
run: whoami 
Login password for 'adminuser': 
Login password for 'adminuser': 
Login password for 'adminuser': 
Login password for 'adminuser': 

私が直接sshに接続しようとすると、完全に動作します。

ssh -i azure.key -p 60770 [email protected] 

私は他の質問(q1q2q3)が、何も動作に与えるよう提案しようとしました。

私が間違っていることは何ですか?

は最後に、私は問題は、公開鍵と秘密鍵のペアの生成に起因してい

答えて

6

ありがとうございます。

windows azure guideで提供されている手順に従うと、opensslを使用して鍵が生成されるため、プロセスは作成プロセス中にインスタンスにアップロードする必要があるpemファイルに格納された公開鍵になります。

取得したこの秘密鍵がparamikoによって正しく認識されないため、ファブリックが機能しないという問題があります。

>>> import paramiko, os 
>>> paramiko.common.logging.basicConfig(level=paramiko.common.DEBUG) 
>>> ssh = paramiko.SSHClient() 
>>> ssh.load_host_keys('private_key_file.key') # private key file generated using openssl 
>>> ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) 
>>> ssh.connect("web1.cloudapp.net",port=56317) 

は私にエラーを与える:あなたがPythonインタプリタからparamikoを使用してSSH接続を開こうと

DEBUG:paramiko.transport:Trying SSH agent key a9d8dd41609191ebeedbe8df768ad8c9 
DEBUG:paramiko.transport:userauth is OK 
INFO:paramiko.transport:Authentication (publickey) failed. 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File ".. /paramiko/client.py", line 337, in connect 
    self._auth(username, password, pkey, key_filenames, allow_agent, look_for_keys) 
    File ".. /paramiko/client.py", line 528, in _auth 
    raise saved_exception 
paramiko.PasswordRequiredException: Private key file is encrypted 

キーファイルは暗号化されていない場合。

は、これを解決するために、私は紺碧にアップロードするPEMにはOpenSSHを使用して、公開キーを変換キーのペアを作成しました:

# Create key with openssh 
ssh-keygen -t rsa -b 2048 -f private_key_file.key 

# extract public key and store as x.509 pem format 
openssl req -x509 -days 365 -new -key private_key_file.key -out public_key_file.pem 

# upload public_key_file.pem file during instance creation 

# check connection to instance 
ssh -i private_key_file.key -p 63534 [email protected] 

は、これが問題を解決しました。デバッグファブリックのssh接続に

4

、あなたのfabfileにこれらの行を追加します。

import paramiko, os 
paramiko.common.logging.basicConfig(level=paramiko.common.DEBUG) 

これはparamikoのデバッグメッセージをすべて表示します。 Paramikoは、ファブリックが使用するsshライブラリです。あなたは、具体的にsshの設定を使用して有効にする必要がありsince Fabric 1.4こと

注:

env.use_ssh_config = True 

(注:私は私のfabfileファブリック> 1に対応するために使用されていること絶対確実 かなり確信しています。5このオプションはありませんが、今は1.10にアップグレードしたわけではありません)。

関連する問題