如何让Fabric失败而不是密码提示" pubkey denied"?

时间:2016-02-18 08:27:01

标签: python fabric

当我使用Fabric连接到具有错误SSH密钥的主机时,它会提示输入密码而不是失败。

以下是SSH的输出:

$ ssh -i 'ssh_key_file' user@host
Permission denied (publickey,keyboard-interactive).

以下是Fabric对以下文件的处理方式:

# fabfile.py
from fabric.api import env, execute, run, task

env.hosts = ['host']
env.key_filename = 'ssh_key_file'

@task
def do_something():
    run('echo hello')

execute(do_something)

Fabric的输出:

$ python fabfile.py
[104.236.30.93] Executing task 'do_something'
[104.236.30.93] run: echo hello
[104.236.30.93] Login password for 'deploy':

如何使用Permission denied (publickey,keyboard-interactive).错误消息立即让Fabric失败,而不是提示输入密码?

1 个答案:

答案 0 :(得分:1)

它还会影响其他提示(例如输入env.host_string的提示),但您可以使用env.abort_on_prompts = True--abort_on_prompts)执行此操作。

当Fabric在提示符处中止时,它会抛出内置的SystemExit异常,以防程序员想要选择另一个SSH密钥或用户名来登录。

请参阅env documentation