使用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为
env.use_ssh_config = True
~/.ssh/config
Host dev.mysite.com User bamboo IdentityFile ~/.ssh/id_dsa_bamboo ForwardAgent yes
有什么想法怎么回事?谢谢您的帮助。
你可以加:
ssh.util.log_to_file("paramiko.log", 10)
导入之后,在fabfile的顶部,以获取有关授权过程的更多详细信息。