Fabric не работает при использовании ~/.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

Любые идеи, почему это происходит?

EDIT: это моя версия ткани.

$ 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.


person Juan Enrique Muñoz Zolotoochin    schedule 18.04.2012    source источник
comment
Ну, у вас опечатка в IdentityFile, это просто проблема с копированием/вставкой?   -  person AdamKG    schedule 18.04.2012
comment
Можете ли вы включить вывод fab --version? (use_ssh_config был добавлен в 1.4). О, и в вашем последнем примере работает ли --user vader? (вам также может понадобиться -i ~/ssh/id_rsa)   -  person AdamKG    schedule 18.04.2012
comment
Еще одна вещь, которую нужно попробовать, — это расширить ~ в вашем .ssh/config до /home/whatever — возможно, ssh расширяет тильды, но библиотека ssh python — нет.   -  person AdamKG    schedule 18.04.2012
comment
Обычно IdentityFile равен ~/.ssh/id_rsa (обратите внимание на точку). Это тоже опечатка? Вы говорите, что можете ssh death-star без проблем, но он также сработает, если вы определили звезду смерти в файле /etc/hosts. Если это так, он все еще работает, если вы удалите его оттуда?   -  person Confusion    schedule 18.04.2012
comment
Да, это была опечатка (плохая идея сделать пост звездными войнами). Я не определил death-star в моем файле /etc/hosts.   -  person Juan Enrique Muñoz Zolotoochin    schedule 18.04.2012
comment
если вы войдете по ssh как vader и запустите: /bin/bash -l -c echo Альдераан уничтожен, что вы получите? возможно, ваши скрипты профиля сломаны   -  person benmmurphy    schedule 18.04.2012
comment
@benmmurphy: Вау, это интересно, вот что я получаю: zsh: segmentation fault /bin/bash -l -c "echo Alderaan has been destroyed" Может быть, это проблема с zsh (которая является оболочкой по умолчанию для пользователя vader на удаленном сервере)?   -  person Juan Enrique Muñoz Zolotoochin    schedule 18.04.2012
comment
Это была проблема с bash на удаленной машине для этого конкретного пользователя. Я создал нового пользователя и использовал его, и теперь все работает. Я до сих пор не знаю, в чем проблема с моим первым пользователем. Я понял, что у меня такая же проблема еще с парой пользователей, все из которых используют zsh в качестве оболочки по умолчанию.   -  person Juan Enrique Muñoz Zolotoochin    schedule 18.04.2012


Ответы (1)


Из этого вывода это не имеет ничего общего с ssh-соединением, а с тем, что возвращает код возврата из запущенного эха. Что касается того, что может сделать его -1, из ваших дополнительных заметок может быть, что что-то нестандартное в вашем zsh или zshrc выдает неверный код возврата и всплывает.

person Morgan    schedule 26.04.2012