相关疑难解决方法(0)

即使我可以使用凭证SSH,Fabric也会要求输入密码

我在使用Fabric部署Django站点时遇到了一个奇怪的问题.我已经配置了两台服务器来使用密钥文件进行登录.我可以在没有密码的情况下SSH到两者.我可以正确地运行fab,

$ fab live pull
[mysite.com] Executing task 'pull'
[mysite.com] run: test -d proj
[mysite.com] run: test -d proj/.git
[mysite.com] run: git pull origin master
...
Run Code Online (Sandbox Code Playgroud)

而另一台服务器要求输入密码:

$ fab staging pull
[dev.mysite.com] Executing task 'pull'
[dev.mysite.com] run: test -d proj
[dev.mysite.com] Login password: 
Run Code Online (Sandbox Code Playgroud)

fabfile非常明确地设置

def staging():
    env.hosts = ['dev.mysite.com']
    env.user = 'bamboo'
    env.key_filename = '~/.ssh/id_dsa_bamboo'
Run Code Online (Sandbox Code Playgroud)

并直接从命令行运行ssh工作

$ ssh bamboo@dev.mysite.com -i ~/.ssh/id_dsa_bamboo
Last login: Wed Apr 11 06:24:28 2012 from xxx.xxx.xx.xx
[bamboo@dev ~]$ 
Run Code Online (Sandbox Code Playgroud)

我也尝试env.use_ssh_config = True使用~/.ssh/configset 设置和运行 …

python django ssh fabric

23
推荐指数
2
解决办法
9107
查看次数

Fabric要求root密码

我正在使用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用户.这里发生了什么?

python fabric

6
推荐指数
1
解决办法
2684
查看次数

标签 统计

fabric ×2

python ×2

django ×1

ssh ×1