【问题标题】:Why suddenly is Capistrano unable to read from my Bitbucket Git repository during deploy?为什么 Capistrano 在部署期间突然无法从我的 Bitbucket Git 存储库中读取数据?
【发布时间】:2016-11-06 06:53:31
【问题描述】:

我使用 Capistrano (v3.5.0) 使用在 Bitbucket 上设置的部署密钥将小型 Rails 应用程序从本地开发机器部署到 Linode 上托管的 VPS。直到上周,它还在发挥作用。

然而,今天,当我运行通常的 cap deploy 命令时,它在第三步尝试从我的 Bitbucket Git 存储库中读取时失败:

DEBUG [6906a62c] Command: ( export RBENV_ROOT="$HOME/.rbenv" RBENV_VERSION="2.2.1"
  GIT_ASKPASS="/bin/echo" GIT_SSH="/tmp/app/git-ssh.sh" ; /usr/bin/env git
  ls-remote --heads git@bitbucket.org:klenwell/app.git )

这是错误:

DEBUG [6906a62c]       conq: repository access denied.
DEBUG [6906a62c]       fatal: The remote end hung up unexpectedly

我已经完成了明显的故障排除:搜索错误消息,确认 VPS 可运行,验证存储库可访问,再次检查 SSH 密钥,确认 SSH 代理正在运行。如果一切都失败了,我会尝试在我的 VPS 主机上生成一个新密钥。

这些点让我特别困惑:

  • 自上次成功运行以来(据我所知)Capistrano 或 VPS 配置没有任何更改。我上周在 Capistrano 日志中看到相同的命令成功运行。
  • 当我作为部署用户 ssh 进入我的 VPS 服务器时,我可以手动运行 ssh -T git@bitbucket.org 和完全相同的 git 命令而不会出现问题。
  • 我本地计算机上的 Jenkins 服务器可以使用其部署密钥成功地从同一个 Bitbucket 存储库中读取。

我错过了什么?

【问题讨论】:

  • Capistrano 使用 SSH 代理转发。实际上,这意味着它将使用您的 local SSH 密钥与 BitBucket 进行身份验证。您的本地密钥是否已更改或不再具有 BitBucket 访问权限?
  • @MattBrictson 你成功了。我的本地系统上有多个 Bitbucket 用户,我猜默认设置在部署之间被重置。无论如何,解决方法是将此行添加到我的deploy.rb 文件中:set :ssh_options, { forward_agent: false }。将您的评论转换为答案,我会选择它。谢谢!

标签: git ssh capistrano bitbucket linode


【解决方案1】:

默认情况下,Capistrano 使用 SSH 代理转发。实际上,这意味着它将使用您的本地 SSH 密钥对 BitBucket 进行身份验证。

也许您的本地密钥已更改或不再具有 BitBucket 访问权限,这可以解释为什么部署不再有效。

您可以像这样禁用 Capistrano 的 SSH 代理转发(从而允许 Git 使用您在服务器上安装的部署密钥):

set :ssh_options, { forward_agent: false }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多