Fabric要求root密码

6 投票
1 回答
2862 浏览
提问于 2025-04-16 08:23

我正在使用Fabric来运行以下代码:

def staging():
    """ use staging environment on remote host"""
    env.user = 'ubuntu'
    env.environment = 'staging'
    env.hosts = ['host.dev']
    _setup_path()

def bootstrap():
    """ initialize remote host environment (virtualenv, deploy, update) """
    require('root', provided_by=('staging', 'production'))
    run('mkdir -p %(root)s' % env)
    run('mkdir -p %s' % os.path.join(env.home, 'www', 'log'))
    create_virtualenv()
    deploy()
    update_requirements()

但是我得到了这个错误:

ubuntu@host.dev:~/projects/proj_name$ fab staging bootstrap
[host.dev] run: mkdir -p /home/ubuntu/www/staging
Password for ubuntu@host.dev: 

为什么Fabric会要求我输入密码?这是默认的ubuntu根用户,在sudoers文件里没有设置密码。到底发生了什么事?

1 个回答

6

元信息:刚发现这个问题还没有人回答。我也不知道到底发生了什么,但我可以猜测一下。

这可能是因为在连接到一个禁用了明文密码SSH连接的机器时,没有使用密钥文件。

正确的做法应该是:

fab -i keyfile.pem <fabric_task>

撰写回答