Fabric要求root密码

Yuv*_*dam 6 python fabric

我正在使用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()
Run Code Online (Sandbox Code Playgroud)

但我明白了:

ubuntu@host.dev:~/projects/proj_name$ fab staging bootstrap
[host.dev] run: mkdir -p /home/ubuntu/www/staging
Password for ubuntu@host.dev: 
Run Code Online (Sandbox Code Playgroud)

为什么Fabric要求我的密码?这是sudoers文件中没有密码的默认ubuntu root用户.这里发生了什么?

Yuv*_*dam 6

meta:刚刚意识到这个问题仍然没有答案.我不知道那里发生了什么,但这里有一个猜测.

这可能是由于在连接到禁用明文密码SSH连接的计算机时未能使用密钥文件引起的.

正确使用将是:

fab -i keyfile.pem <fabric_task>
Run Code Online (Sandbox Code Playgroud)