【发布时间】:2015-10-25 16:39:09
【问题描述】:
我试图在与 Fabric 建立 SSH 连接期间跳过提示。喜欢Python Fabric: Skip logins needing passwords。我在文档中读到选项 abort_on_prompts 应该这样做。但我不能让它工作。
#!/usr/bin/python
from fabric.api import *
env.abort_on_prompts=True
def remote_cmd(server_name):
with settings(hide('output','running','warnings'),
host_string=server_name,
user = 'john',
key_filename = '/home/john/id_rsa',
warn_only=True):
return run('ls /data/')
server_name = 'server01'
ls_result = remote_cmd(server_name)
这段代码一直要求我输入 server01 的密码(因为它没有公钥),而我想跳过它。
【问题讨论】:
-
你确定你的
/home/john/id_rsa.pub在远程.ssh/authorized_keys中吗? -
不,它不在远程;我不想这样,这就是为什么我想跳过它:)
-
那您认为服务器如何对您进行身份验证?如何确定您是
john而无需提供密码或公钥?你能指望什么 ?停止/跳过连接的程序? -
是的,这就是我所期望的,因为“abort_on_prompts”应该这样做 -> Fabric documentation
-
我在运行你的代码时没有这个问题:
Fatal error: Needed to prompt for a connection or sudo password (host: xxx), but abort-on-prompts was set to True. Aborting