Capistrano 使用了错误的用户来获取远程仓库。权限被拒绝(公钥)

Capistrano uses the wrong user to fetch remote repo. Permission denied (publickey)

我已经在 BitBucket 上配置了 public 密钥,它可以通过 SSH 运行,但是使用 Capistrano 它默认为错误的用户:

INFO [813163d1] Running /usr/bin/env git ls-remote --heads \
 git@bitbucket.org:phec06/my-repo.git as **fedorius@localhost**

虽然它应该使用 config/deploy/production.rb 中指定的用户 ubuntu

server 'myserver.compute.amazonaws.com', user: 'ubuntu', roles: %w{app db web}

当我运行:

cap production deploy

它给了我:

DEBUG [813163d1]    Permission denied (publickey).
DEBUG [813163d1]    fatal: Could not read from remote repository.

我整天都在寻找解决方案,我是 Capistrano 的新手:(

使用 Capistrano 3.6.1 和 Rails 5,使用 Mac OS X

部署到 AWS Ubuntu

我认为这是您的 bitbucket 帐户的问题,或者您为该帐户使用了错误的 ssh 密钥。请仔细检查您是否以 **fedorius@localhost** 身份登录。尝试以下

eval `ssh-agent`
ssh-add ~/.ssh/id_rsa
ssh -T hg@bitbucket.org

找到解决方案。

原来我有点笨。我开始使用capistrano-scm-gitcopy然后放弃了,但是我离开了

set :scm, :gitcopy

在我的 deploy.rb 上,删除这一行解决了问题。