2012-04-18 15 views
1

我有以下的配置在我的〜/ .ssh/config中面料使用時不工作的〜/ .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 [email protected] done. 

我敢肯定,SSH配置是正確的,因爲我可以ssh death-star沒有問題。

此外,當我指定主機名,並使用root用戶的默認密鑰,而不是使用ssh配置文件中,它的工作原理:

$ 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 

但如果使用非root用戶vader,擁有自己的關鍵death_id_rsa,它不。儘管如此,SSH服務器仍然工作,作爲root和vader。

+0

那麼,您在IdentityFile中有一個錯字,是否僅僅是複製/粘貼問題? – AdamKG 2012-04-18 16:34:23

+0

是的,它現在已經修復:) – 2012-04-18 16:35:58

+0

你可以包含'fab --version'的輸出嗎? (在1.4中添加了'use_ssh_config')。哦,在你的最後一個例子中,'--user vader'是否工作? (你可能還需要'-i〜/ ssh/id_rsa') – AdamKG 2012-04-18 16:38:00

回答

0

從輸出它沒有任何關係與SSH連接,但是正在運行的回聲的返回代碼是什麼返回。至於什麼會使它成爲-1,從你的附加筆記中,可能是你的zsh或zshrc中的自定義函數拋出了一個錯誤的返回碼,並且它正在冒泡。