如何让 Fabric 失败而不是 "pubkey denied" 的密码提示?
How to get Fabric to fail instead of password prompt for "pubkey denied"?
当我使用错误的 SSH 密钥使用 Fabric 连接到主机时,它会提示输入密码而不是失败。
这是 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)
织物的输出:
$ 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':
如何让 Fabric 立即失败,最好是显示 Permission denied (publickey,keyboard-interactive).
错误消息,而不是提示输入密码?
它还会影响其他提示(例如输入 env.host_string
的提示),但您可以使用 env.abort_on_prompts = True
(--abort_on_prompts
).
当 Fabric 根据提示中止时,它会抛出内置的 SystemExit
异常,如果程序员想要 select 另一个 SSH 密钥或用户名登录时可以捕获该异常。
当我使用错误的 SSH 密钥使用 Fabric 连接到主机时,它会提示输入密码而不是失败。
这是 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)
织物的输出:
$ 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':
如何让 Fabric 立即失败,最好是显示 Permission denied (publickey,keyboard-interactive).
错误消息,而不是提示输入密码?
它还会影响其他提示(例如输入 env.host_string
的提示),但您可以使用 env.abort_on_prompts = True
(--abort_on_prompts
).
当 Fabric 根据提示中止时,它会抛出内置的 SystemExit
异常,如果程序员想要 select 另一个 SSH 密钥或用户名登录时可以捕获该异常。