Capistrano部署**主机密钥验证失败

时间:2011-10-22 22:34:04

标签: ruby-on-rails capistrano

我已经跟随其他网站的一些建议但无济于事。当我尝试 cap deploy:cold 我一直得到“主机密钥验证失败。”

我已经尝试了一切。我已经从我的计算机ssh'd到远程,从已知主机删除和读取两个密钥,从github克隆,从服务器和本地github设置我的公钥。

我在这里缺少什么?


Capfile: https://gist.github.com/1308243


错误: https://gist.github.com/1308255

5 个答案:

答案 0 :(得分:79)

添加到您的deploy.rb:

ssh_options[:forward_agent] = true
default_run_options[:pty] = true

或者登录您要部署到的服务器(作为部署用户)并运行:

ssh git@github.com
The authenticity of host 'github.com (207.97.227.239)' can't be established.
RSA key fingerprint is **:**:**:.
Are you sure you want to continue connecting (yes/no)? yes

我发现这个问题的大多数时候是github.com不在你的~/.ssh/known_hosts

答案 1 :(得分:6)

而不是使用看起来像这样的git ssh url git@github.com:definelabs / urbanairship.git

使用看似这样的只读网址 GIT中://github.com/definelabs/urbanairship.git

答案 2 :(得分:1)

您曾提到cap deploy:setup工作且cap deploy失败。所以看起来错误消息与ssh连接无关,它与git checkout有关。这可能是因为您的git远程服务器使用基于密钥的身份验证,并且服务器中缺少所需的密钥。

答案 3 :(得分:0)

除了

ssh_options[:forward_agent] = true
default_run_options[:pty] = true

我还需要this,如下所示:

def add_domain_to_known_hosts(hostname)
  ip_address = "`dig +short A #{hostname}`"
  run "ssh-keygen -R #{hostname}"
  run "ssh-keygen -R #{ip_address}"
  run "ssh-keygen -R #{hostname},#{ip_address}"
  run "ssh-keyscan -H #{hostname},#{ip_address} >> ~/.ssh/known_hosts"
  run "ssh-keyscan -H #{ip_address} >> ~/.ssh/known_hosts"
  run "ssh-keyscan -H #{hostname} >> ~/.ssh/known_hosts"
end

尽管如此,应该注意的是,capistrano不鼓励使用PTY: https://github.com/capistrano/capistrano#a-word-about-ptys

答案 4 :(得分:-1)

要关注服务器上~/YOUR_USER_NAME /.ssh/authorized_keys2的一个文件。我认为它应该包含公钥/私钥(两个中的一个,我认为私有?)