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

bca*_*tle 23 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
...
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 设置和运行

Host dev.mysite.com                                                                           
    User bamboo                                                                              
    IdentityFile ~/.ssh/id_dsa_bamboo                                                        
    ForwardAgent yes
Run Code Online (Sandbox Code Playgroud)

什么想法可能会发生什么?谢谢您的帮助.

Mor*_*gan 25

你可以加:

ssh.util.log_to_file("paramiko.log", 10)
Run Code Online (Sandbox Code Playgroud)

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

  • 高明.别忘了`from fabric.network import ssh` (19认同)
  • 太好了,谢谢你.指向我,paramiko不支持`ssh-ed25519`类型的键.第二个问题是你还需要确保远程服务器提供一个`rsa`键,并提供一个作为`身份文件'. (2认同)

Gab*_*ull 8

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

ssh-add -D

然后添加我的密钥:

ssh-add -K keyname

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

  • `ssh-add` 对我来说就足够了。 (2认同)