Python fabric一直在询问密码
我有一个包含Python fabric一直在询问密码,python,ssh,fabric,Python,Ssh,Fabric,我有一个包含 env['hosts'] = ['localhost'] env['user'] = 'code' env['password'] = 'searce' def mk_dirtree(): sudo("mkdir %s" % PROJECT_DIR) sudo("chown -R code:code %s" % PROJECT_DIR) run("mkdir -p %s" % (PROJECT_DIR + '/www/static')) sudo(
env['hosts'] = ['localhost']
env['user'] = 'code'
env['password'] = 'searce'
def mk_dirtree():
sudo("mkdir %s" % PROJECT_DIR)
sudo("chown -R code:code %s" % PROJECT_DIR)
run("mkdir -p %s" % (PROJECT_DIR + '/www/static'))
sudo("chown -R www-data:www-data %s" % (PROJECT_DIR + '/www'))
现在,当我做fab mk_dirtree
时,我会不断提示输入“code”的[localhost]登录密码:
我在一个ec2实例上运行它,我使用密钥通过ssh连接到该实例,ssh的密码登录被禁用
编辑:
我认为fabric首先要做的是sshcode@localhost
但这不起作用,因为密码sshing被禁用运行()和sudo()操作是通过ssh执行的。如果要在本地主机上运行命令,则应改为使用local()
:
同一页上有
run()
和sudo()
的文档,这两个文档都提到了它们在“远程主机”上运行的事实,这意味着它们将通过ssh运行。如果您真的想并且需要使用run()
而不是local()
您可以将SSH公钥添加到用户帐户的~/.SSH/authorized_keys
文件中
这看起来像这样:
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
此解决方案将绕过本地计算机的登录密码提示。当然,您必须在运行fabfile的每台本地计算机上执行此操作。这确实帮助了我在iMac上的工作。我正在开发run()命令,这允许在本地主机上快速测试这些命令。