3

我有 fab 文件,其中包含

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不断提示[localhost] Login password for 'code':

我在一个 ec2 实例上运行它,我使用密钥通过 ssh 连接到该实例,并且禁用了 ssh 的密码登录

编辑: 我认为fabric是首先做的ssh code@localhost,但由于密码sshing被禁用,所以这不起作用

4

2 回答 2

4

如果你真的想要并且需要使用run()而不是local()你可以将你的 SSH 公钥添加到~/.ssh/authorized_keys你的用户帐户的文件中。

这看起来像这样:

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

该解决方案将绕过本地机器的登录密码提示。当然,您必须为运行 fabfile 的每台本地计算机执行此操作。

于 2014-12-17T11:50:04.170 回答
1

run()sudo()操作是通过 ssh 进行的。如果你想在 localhost 上运行命令,你应该考虑使用local()

http://docs.fabfile.org/en/1.4.3/api/core/operations.html?highlight=sudo#fabric.operations.local

在同一页面上是文档run()sudo()它们都提到了它们在“远程主机”上运行的事实,这表明它们将通过 ssh 运行。

于 2012-10-09T08:38:51.620 回答