【发布时间】: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