为什么 Capistrano 在部署期间突然无法从我的 Bitbucket Git 存储库中读取?

Why suddenly is Capistrano unable to read from my Bitbucket Git repository during deploy?

我使用 Capist运行o (v3.5.0) 将一个小型 Rails 应用程序从我的本地开发机器部署到 VPS 托管在 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 使用 SSH 代理转发。实际上,这意味着它将使用您的本地 SSH 密钥通过 BitBucket 进行身份验证。

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

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

set :ssh_options, { forward_agent: false }