Capistrano部署在git ls-remote调用时要求输入用户名/密码

3

作为第一次使用Capistrano的用户,我已经尽我所能地设置了所有必要的组件。但是当我运行cap deploy时,会弹出以下提示要求输入我的GitHub用户名:

Fri Dec 02$ cap deploy
  * executing `deploy'
  * executing `deploy:update'
 ** transaction: start
  * executing `deploy:update_code'
    executing locally: "git ls-remote https://github.com/uname/repo HEAD"
Username: 

我假设正在本地的OS X笔记本上运行。如果我运行 git ls-remote https://github.com/uname/repo,会提示我输入用户名。然而,我可以正常地克隆这个存储库,这使我认为本地ssh密钥已经正确设置了。我漏掉了什么?谢谢

编辑 #1 - deploy.rb文件顶部

set :application, "test-rails"
set :repository,  "https://github.com/uname/app"

set :scm, :git
set :user, "deploy"
set :deploy_to, "/data/sites/site.com/apps/#{application}"
set :use_sudo, false
set :keep_releases, 5

role :web, "173.230.xxx.xxx"

你是否像这里一样在 deploy.rb 中设置了你的用户名:https://github.com/nesquena/cap-recipes/blob/master/examples/simple/deploy.rb#L16 - apneadiving
我认为是这样的 - 我在 deploy.rb 的顶部添加了代码 - 部署用户存在于服务器上但本地不存在。我原本以为 '本地' 意味着基本上是从其运行的主机。 - timpone
此外,我能够使用deploy用户在远程主机172.230.xxx.xxx上克隆git仓库。 - timpone
2个回答

6

您正在使用HTTPS URL。这将忽略您的SSH密钥,您需要通过HTTPS进行基本身份验证。您希望您的URL变成ssh://git@github.com/uname/repo

(克隆操作可以正常工作,因为您可以匿名克隆而无需进行身份验证。)


我只是替换了一个 Git URL。 - timpone

0
也许对其他人有所帮助: 在目标服务器上,确保缓存仓库的凭据。 我缓存了我的第一个非密码 URL,无论我如何在 deploy.rb 中更新 URL,它都没有在 origin 上更新。
在我的情况下...
进入: /srv/YOURREPONAME/shared/cached-copy
git remote show origin
确保您的 origin 与您尝试在 deploy.rb 中设置的 URL 相同。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接