23

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

$ 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

4 回答 4

26

你可以加:

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

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

于 2012-04-11T07:10:52.107 回答
10

对我来说,我必须使用以下命令重置 SSH 代理身份:

ssh-add -D

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

ssh-add -K keyname

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

于 2015-02-27T01:16:09.507 回答
2

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

sudo pip install --upgrade fabric
于 2017-12-21T16:51:13.507 回答
0

就我而言,我无法在日志文件中看到任何有用的信息。ssh但是,在第一次使用并启用 ssh-agent 转发连接到服务器后,我能够连接:

ssh -A <user>@<host>

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

于 2019-05-28T21:44:22.727 回答