当我使用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失败,而不是提示输入密码?
答案 0 :(得分:1)
它还会影响其他提示(例如输入env.host_string
的提示),但您可以使用env.abort_on_prompts = True
(--abort_on_prompts
)执行此操作。
当Fabric在提示符处中止时,它会抛出内置的SystemExit
异常,以防程序员想要选择另一个SSH密钥或用户名来登录。