部署到slicehost时Capistrano错误

时间:2010-05-06 16:27:15

标签: ruby-on-rails ruby capistrano slicehost

我尝试使用capistrano在slicehost中部署应用程序。我可以使用相同的凭据通过SSH登录,但是当我尝试部署它时,我收到以下错误:

  • 执行`deploy'
  • 执行`deploy:update' **交易:开始
  • 执行`deploy:update_code' 更新所有服务器上的缓存结帐 在本地执行:“git ls-remote git@git.assembla.com:xxx.git master”
  • 执行“if [-d / home / sdn / shared / cached-copy];然后cd / home / xxx / shared / cached-copy&& git fetch -q origin&& git reset -q --hard 910a97024a45f1304d6b50c8862605ea0f1cf829&& git clean -q -d -x -f;否则git clone -q git@git.assembla.com:xxxx.git / home / xxx / shared / cached-copy&& cd / home / xxx / shared / cached-copy&& git checkout -q -b deploy 910a97024a45f1304d6b50c8862605ea0f1cf829; fi“ 服务器:[“173.203.79.208”] *** [deploy:update_code]回滚
  • 执行“rm -rf / home / xxx / releases / 20100506160548; true” 服务器:[“173.203.79.208”] 回滚时出现[deploy:update_code]异常:Capistrano :: ConnectionError,连接失败:173.203.79.208(Net :: SSH :: Disconnect:远程主机关闭连接) 连接失败:173.203.79.208(Net :: SSH ::断开连接:远程主机关闭连接)

我做错了什么?是什么我应该添加到我的deploy.rb文件,以使其与slicehost一起使用?

3 个答案:

答案 0 :(得分:1)

Slicehost是否有权从您的git服务器克隆存储库?如果您的git服务器需要ssh身份验证,则必须在主机上生成ssh密钥,并将主机的公钥放在git服务器上。

如果不是这样,那么它似乎与在主机上运行git有关。但是“(Net :: SSH :: Disconnect:由远程主机关闭的连接)”闻起来像是一个身份验证问题。

答案 1 :(得分:1)

我有同样的问题。

railsu@li:~/.ssh$ ls
authorized_keys

我已经在railsu和git中创建了.ssh文件。但是这里也存在这个问题。

所以我认为这个错误不是身份验证问题。

答案 2 :(得分:0)

可以在Clinton建议的服务器上生成密钥,或者您可以启用SSH代理转发。

这意味着您不必在服务器上生成新的SSH密钥。您使用已部署的计算机上已有的密钥,并且密钥转发,以便在服务器上使用以连接到您的git服务器。

您可以将ssh_options[:forward_agent] = true添加到您的capistrano配方中,或者像这样添加一个主机配置到您的~/.ssh/config

Host <name>
  HostName <ip or host>
  User <username>
  IdentityFile ~/.ssh/<filename>
  ForwardAgent yes

我更喜欢后者。

www.unixwiz.net

上有一个非常完整的SSH代理转发指南