从 GitHub 部署 Key 问题 Capistrano

Posted

技术标签:

【中文标题】从 GitHub 部署 Key 问题 Capistrano【英文标题】:Deploy from GitHub Key problem Capistrano 【发布时间】:2021-02-14 12:20:13 【问题描述】:

我有一个 Rails 应用程序,我使用 Capistrano 和 cap production deploy 部署它

这很好,但如果我重新启动我的机器,我会收到以下错误:

01 git@github.com:权限被拒绝(公钥)。 01 致命:无法从远程存储库中读取。 01 01 请确保您拥有正确的访问权限 01 并且存储库存在。

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

ssh-add

ssh -A deploy@IP here 'git ls-remote git@github.com:repo URL here'

这让我可以部署。

这里显然有问题,它没有存储关键细节。

谁能帮我理解第二个命令的实际作用以及为什么我必须在重启后重新运行它们?

【问题讨论】:

【参考方案1】:

第二个命令将您的私钥从本地机器“转发”到远程机器(使用 -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 密钥转发(你现在正在做的)临时和短暂地将你的私钥放在你的远程服务器上——这可能是一种足够安全的方法。但是,不要试图将其永久复制到远程服务器。

【讨论】:

以上是关于从 GitHub 部署 Key 问题 Capistrano的主要内容,如果未能解决你的问题,请参考以下文章

从 GitHub 部署时处理 config.json 文件

从 Github Action 部署到 Github 包注册表

使用部署密钥从 Github 存储库的发布部分下载文件

使用 github 操作从 monorepo 部署单个服务

通过代码管道从 Github 部署失败

将 PHP 代码从 github 部署/重新部署到 GCP Compute Engine LAMP Stack 的最佳方式 [Google 点击部署]