更改 git 的遥控器在 digital ocean 上不起作用

Changing remote of git does not work on digital ocean

我正在 gital ocean 上部署一个 rails 应用程序,紧随 this link。当我按照确切的步骤操作时,它完美地工作了。但后来我意识到 github 存储库是 public。我应该把它当作私人的。我创建了一个私有存储库并更改了本地的远程源。我将 ssh 密钥放在新的私有存储库中。删除了服务器中的旧应用程序文件夹。然后尝试从远程存储库克隆,但它要求输入密码。 (它应该拿了 ssh 密钥??)。

我还更改了 deploy.rb 和 nginx.conf 以反映远程存储库的更改,然后给出了这个命令 cap production deploy:initial,但它失败了,因为 git。

为什么会失败?为什么ssh key没有生效?

这看起来 capistrano 仍在使用旧的 git 远程地址。当您更改远程 url 时,在 deploy.rb 等内部执行此操作是不够的,但是当您在服务器上的 capistrono 部署目录中手动更改文件 repo/config 时之前已经用旧遥控器 url 部署了它。

因此,如果您的 deploy.rb(或 deploy/production.rb

中包含以下内容
set :deploy_to, '/var/www/path/to/deploy'

您必须在服务器上手动编辑 文件

/var/www/path/to/deploy/repo/config

并修改遥控器的 url = XXX 条目以匹配新条目。

可能是你没有开启数字海洋的ssh转发?要验证,首先在您的本地电脑上编辑 $HOME/.ssh/config

host *
  ForwardAgent yes

现在尝试运行cap production deploy:initial。如果它现在没有密码就可以工作,那么你应该更改 host * 以实际匹配你的 ssh 主机的主机名,所以 ForwardAgent 只为数字海洋设置:

host digitalocean.com
  ForwardAgent yes

对于您的用例:ForwardAgent 使服务器能够使用您的本地 ssh 密钥,因此您的部署用户与本地用户具有相同的 "ssh rights"。