【问题标题】:Is it possible to pass ssh key to git/ssh agent as a cli parameter?是否可以将 ssh 密钥作为 cli 参数传递给 git/ssh 代理?
【发布时间】:2022-01-27 19:05:08
【问题描述】:

我正在通过 GitHub Actions 设置 CD 工作流程,this 等教程建议我必须这样做

  1. 创建用户(完成)
  2. (用于访问服务器的GH操作)生成一个密钥对,将公钥保存到用户的~/.ssh/authorized_keys(或~/.ssh/authorized_keys2),将私钥保存到github秘密中以用于操作(完成,注意私钥可以是仅在 github 上作为机密,因此访问是安全的)
  3. (将代码从 GH 拉取到服务器)生成另一个密钥对,将私钥保存在用户的文件夹中(如 ~/.ssh/id_rsa)并将公钥作为部署密钥放入 GH 中

我想知道是否可以修改 3.:我可以在 GH 上同时存储 公钥和私钥,并将私钥从 GH 秘密传递给 bash 以进行拉取吗?这样一来,安全性会更高,在新服务器上设置更快,甚至可以更快地迁移/设置多个项目。

还没有找到任何关于此的内容,虽然我可能使用错误的关键字进行搜索...

【问题讨论】:

  • 你如何看待 Github 的 goijng 知道可以将私钥交给谁?
  • 附带说明:Git 本身根本不使用或看到密钥:它在 ssh 上完成了整个工作。 (这与 https 不同,其中 Git 必须至少将密钥/密码传入/传出 libcurl,然后合并到 Git 中。)这不会影响答案,只是需要牢记。

标签: git github ssh


【解决方案1】:

我可以在 GH 上同时存储公钥和私钥吗

首先,单独存储私钥就足够了:您可以生成the public key from the private one

其次,如果您传递了私钥,请确保您的 GH 操作在所述操作完成后将其从服务器中删除。
这样,该私钥仅在需要时使用,不会保留在服务器上。

由于您的 GH Action 可以通过自己的 SSH 密钥访问服务器,因此它可以:

  • 将其秘密内容写入“key2”文件,如shown here
  • scp那个key2文件到服务器
  • 通过ssh 执行rm key2 命令以在操作完成时删除文件:ssh -i /path/to/private/key1 'rm /remote/path/to/key2'

【讨论】:

  • 是的,这就是我的想法,我只是不知道如何做到这一点。如何将密钥从秘密传递到 ssh/git cli(以及如何删除它)
  • @YakovL 当然,我已经编辑了答案以包含这些步骤。
猜你喜欢
  • 2017-12-25
  • 1970-01-01
  • 2020-01-12
  • 1970-01-01
  • 1970-01-01
  • 2020-04-09
  • 2012-01-25
  • 2011-12-08
  • 1970-01-01
相关资源
最近更新 更多