从GitHub部署关键问题Capistrano

问题描述

我有一个Capistrano和cap production deploy一起使用的Rails应用

这很好,但是如果我重新启动计算机,则会出现以下错误

01 [email protected]:权限被拒绝(公钥)。 01致命:无法从远程存储库读取。 01 01请确保您具有正确的访问权限 01并且存储库存在。

解决此问题,我需要运行以下两个命令:

ssh-add

ssh -A deploy@{{IP here}} 'git ls-remote [email protected]:{{repo URL here}}'

这使我可以部署。

这里显然不对劲,没有存储关键细节。

有人可以帮我理解第二个命令的实际作用,以及为什么重启后我必须重新运行它们吗?

解决方法

第二个命令将您的私钥从本地计算机“转发”到远程计算机(使用-A)。这会将您的私钥临时放置在远程服务器上。然后,远程机器将使用该私钥对GitHub进行身份验证。

第一个命令设置要转发到远程服务器的私钥。

有关如何使用ssh密钥转发的更多信息,请参见https://dev.to/levivm/how-to-use-ssh-and-ssh-agent-forwarding-more-secure-ssh-2c32

如果远程服务器的IP地址始终相同,则可以将ssh配置为始终将密钥转发到该IP,并且不需要命令的-A部分。

将命令包装在可以运行的bash脚本中可能对您很有用,它将为您完成这两个命令。

安全警告

您的“私有” ssh密钥永远不应该共享。 ssh密钥转发(您现在要执行的操作)是暂时的,并将您的私钥短暂地放在远程服务器上-这可能是一种足够安全的方法。但是,请勿尝试将其永久复制到远程服务器。