我使用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主机上生成一个新密钥。
这些要点特别令我感到沮丧:
ssh -T git@bitbucket.org
和相同的git命令而不会出现问题。我错过了什么?
答案 0 :(得分:1)
默认情况下,Capistrano使用SSH代理转发。实际上,这意味着它将使用您的本地SSH密钥与BitBucket进行身份验证。
也许您的本地密钥已更改或不再具有BitBucket访问权限,这可以解释为什么部署不再有效。
您可以禁用Capistrano的SSH代理转发(从而允许Git使用您在服务器上安装的部署密钥),如下所示:
set :ssh_options, { forward_agent: false }