【问题标题】:Deploy from GitHub Key problem Capistrano从 GitHub 部署 Key 问题 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}}'

这让我可以部署。

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

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

【问题讨论】:

    标签: ruby-on-rails github deployment capistrano ssh-keys


    【解决方案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 密钥转发(你现在正在做的)临时和短暂地将你的私钥放在你的远程服务器上——这可能是一种足够安全的方法。但是,不要试图将其永久复制到远程服务器。

    【讨论】:

      猜你喜欢
      • 2014-07-07
      • 2014-05-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-24
      相关资源
      最近更新 更多