У меня есть следующая конфигурация в моей ~/.ssh/config
Host death-star
HostName deathstar.empire.com
User vader
IdentityFile ~/.ssh/death_id_rsa
И следующий файл
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
EDIT 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
, он этого не death_id_rsa
. SSHing на сервере все еще работает, как root, так и vader.
Из этого вывода это не имеет никакого отношения к соединению ssh, но возвращается возвращаемый код из возвращаемого эха. Что касается того, что сделало бы это -1, из ваших дополнительных заметок могло бы быть, что что-то обычное в вашем zsh или zshrc бросает плохой код возврата, и он пузырится вверх.