使用〜/ .ssh / config时,Fabric无法正常工作

时间:2012-04-18 16:33:17

标签: python bash ssh fabric

我在〜/ .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没有问题。

此外,当我指定主机名并使用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,它不会。尽管如此,以root用户和vader方式连接到服务器仍然有效。

1 个答案:

答案 0 :(得分:0)

从那个输出中,它与ssh连接无关,但是正在运行的echo的返回代码是返回的。至于什么会使它成为-1,从你的附加说明中,可能是zsh或zshrc中的自定义内容会抛出错误的返回代码并且它正在冒泡。