0
我使用Capistrano(v3.5.0)从我的本地开发机器上使用在Bitbucket上设置的部署密钥部署到Linode上托管的VPS的小型Rails应用程序。就在上个星期,它就像一个魅力。为什么Capistrano在部署期间无法从我的Bitbucket Git存储库中读取?
然而今天,当我运行通常cap deploy
命令,它没有在第三步时,它试图从我的到位桶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 [email protected]: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日志中成功运行相同的命令。
- 当我以部署用户的身份登录到VPS服务器时,可以手动运行
ssh -T [email protected]
和相同的git命令,而不会出现问题。 - 我的本地机器上的Jenkins服务器可以使用其部署密钥从相同的Bitbucket存储库成功读取。
我错过了什么?
Capistrano的使用SSH代理转发。实际上,这意味着它将使用您的本地* SSH密钥与BitBucket进行身份验证。您的本地密钥是否已更改或不再具有BitBucket访问权限? –
@MattBrictson你钉了它。我在本地系统上有多个Bitbucket用户,我想默认情况下会在部署之间重置。无论如何,解决方法是将此行添加到我的'deploy.rb'文件中:'set:ssh_options,{forward_agent:false}'。将您的评论转换为答案,然后我选择它。谢谢! – klenwell