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