更改 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"。
我正在 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"。