~/.ssh/config に次の構成があります
Host death-star
HostName deathstar.empire.com
User vader
IdentityFile ~/.ssh/death_id_rsa
そして、次の fabfile
from fabric.api import env, task
env.use_ssh_config = True
@task
def destroy_rebels():
run("echo Alderaan has been destroyed")
私はこのようにタスクを呼び出しています:
$ fab --host death-star destroy_rebels
これは私が得る出力です:
[death-star] Executing task 'destroy_rebels'
[death-star] run: echo Alderaan has been destroyed
Fatal error: run() received nonzero return code -1 while executing!
Requested: echo Alderaan has been destroyed
Executed: /bin/bash -l -c "echo Alderaan has been destroyed"
Aborting.
Disconnecting from vader@deathstar.empire.com... done.
問題なくできるので、ssh構成が正しいと確信していますssh death-star
。
また、ホスト名を指定し、ssh 構成ファイルを使用する代わりにユーザー root のデフォルト キーを使用すると、次のように動作します。
$ fab --user root --host deathstar.empire.com destroy_rebels
なぜこれが起こるのですか?
編集:これは私のファブリックバージョンです
$ fab --version
Fabric 1.4.1
ssh (library) 1.7.13
編集2:
元の投稿の一部を書き直しました。新しいエントリを追加すると、 root
(デフォルトのキーを使用してid_rsa
も、を使用しても常に機能 することに気付きました:.ssh/config
Host root-death-star
HostName deathstar.empire.com
User root
IdentityFile ~/.ssh/id_rsa
$ fab --host root-death-star destroy_rebels # this works
vader
しかし、独自のキーを持つ非ルートユーザーを使用すると、death_id_rsa
そうではありません。ただし、サーバーへの SSH 接続は、root および vader として引き続き機能します。