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

时间:2012-04-11 06:41:53

标签: python django 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
...

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

$ fab staging pull
[dev.mysite.com] Executing task 'pull'
[dev.mysite.com] run: test -d proj
[dev.mysite.com] Login password: 

fabfile非常明确地设置

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

直接从命令行运行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 ~]$ 

我还尝试设置env.use_ssh_config = True并在~/.ssh/config设置为

的情况下运行
Host dev.mysite.com                                                                           
    User bamboo                                                                              
    IdentityFile ~/.ssh/id_dsa_bamboo                                                        
    ForwardAgent yes

任何想法可能会发生什么?谢谢您的帮助。

4 个答案:

答案 0 :(得分:25)

您可以添加:

ssh.util.log_to_file("paramiko.log", 10)

在导入之后,在fabfile的顶部,以获取有关授权过程的更多详细信息。

答案 1 :(得分:5)

对我来说,我不得不重置SSH代理身份:

ssh-add -D

然后将我的密钥添加回来:

ssh-add -K keyname

小心,这将删除SSH代理的所有身份。

答案 2 :(得分:2)

我不得不更新结构(可能是在osx更新之后):

sudo pip install --upgrade fabric

答案 3 :(得分:0)

就我而言,我在日志文件中看不到任何有用的信息。但是,在首先使用ssh连接到服务器并启用ssh-agent转发之后,我能够进行连接:

ssh -A <user>@<host>

然后我运行fab并被连接,而没有要求输入密码。