3

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

  • 执行“部署”
  • 执行 `deploy:update' ** 事务:开始
  • 执行 `deploy:update_code' 更新本地执行的所有服务器上的缓存签出:“git ls-remote git@git.assembla.com:xxx.git master”
  • 执行“如果 [ -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:xxx.git /home/xxx/shared/cached-copy && cd /home/xxx/shared/cached-copy && git checkout -q -b 部署 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::Disconnect:连接被远程主机关闭)

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

4

3 回答 3

1

我也有同样的问题。

railsu@li:~/.ssh$ ls
authorized_keys

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

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

于 2012-08-10T14:19:48.697 回答
1

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

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

于 2010-05-06T17:12:28.267 回答
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 代理转发指南

于 2010-05-06T23:37:47.653 回答