我已经跟随其他网站的一些建议但无济于事。当我尝试
cap deploy:cold
我一直得到“主机密钥验证失败。”
我已经尝试了一切。我已经从我的计算机ssh'd到远程,从已知主机删除和读取两个密钥,从github克隆,从服务器和本地github设置我的公钥。
我在这里缺少什么?
Capfile: https://gist.github.com/1308243
答案 0 :(得分:79)
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
的一个文件。我认为它应该包含公钥/私钥(两个中的一个,我认为私有?)