提问人:chilly_maximus 提问时间:1/17/2022 最后编辑:VonCchilly_maximus 更新时间:2/2/2022 访问量:5390
拉取部署、github actions 和 ssh 密钥
Pull deploy, github actions and ssh keys
问:
比方说,我想使用 GitHub 操作和拉取策略来设置我的部署过程。
所以我有一个 Ubuntu 服务器,我复制服务器的公钥 ssh 密钥,将其添加到我的 GitHub 帐户,然后我可以从 Ubuntu 服务器克隆,构建并运行应用程序。
这很好,但我觉得这是一个小陷阱。
密钥将添加到帐户,而不是存储库。
如果我离开作为存储库所有者的组织,会发生什么情况?
服务器将失去执行正确 CI 的能力,对吧?
组织所有者可以创建持有 SSH 密钥且永远不会离开组织的帐户,但如果存储库所有权被转移怎么办?
我可能在这里遗漏了一些东西,但为什么不允许将密钥直接添加到存储库,而不是用户帐户?
或者这个选项在那里,我不知何故错过了它?
答:
4赞
VonC
1/17/2022
#1
密钥将添加到帐户中,而不是添加到存储库中。
这就是每个存储库都有部署密钥的原因。
例如,像 webfactory/ssh-agent
这样的 GitHub Action 确实支持 Deploy 密钥。
为了支持在此用例中选择正确的密钥,此操作会扫描密钥注释,并将设置额外的 Git 和 SSH 配置以使工作正常进行。
- 为存储库(如 或)创建部署密钥时,将该 URL 放入密钥注释中。(提示:尝试 。
[email protected]:owner/repo.git
https://github.com/owner/repo
ssh-keygen ... -C "[email protected]:owner/repo.git"
- 将密钥添加到代理后,此操作将扫描密钥注释。
- 对于包含此类 URL 的关键注释,将编写使用 .它会将 git 请求重定向到以 https://github.com/owner/repo 或 [email protected]:owner/repo 开头的 URL,以创建虚假的主机名/URL,例如 .
url.<base>.insteadof
[email protected]...:owner/repo
- 将生成适用于假主机名的 SSH 配置部分。它会将 SSH 连接映射回 github.com,同时将 SSH 指向包含相应密钥公共部分的文件。这将使 SSH 在连接到 GitHub.com 时使用正确的密钥。
然后,您将获得一个 GitHub Action 配置,如以下示例所示:
name: Deploy
on:
push:
tags:
- 'GA*'
# ...
- name: Install SSH Client 🔑
uses: webfactory/[email protected]
with:
ssh-private-key: ${{ secrets.DEPLOY_KEY }}
- name: Deploy 🚀
uses: JamesIves/[email protected]
with:
BASE_BRANCH: master
BRANCH: gh-pages
CLEAN: true
FOLDER: .
SSH: true
# ...
在命令行中,从 GitHub CLI gh 2.5.0(2022 年 2 月)开始:gh repo deploy_key
gh repo deploy-key add <key-file> [flags]
# generate a passwordless SSH key and add it as a deploy key to a repository
$ ssh-keygen -t ed25519 -C "my description" -N "" -f ~/.ssh/gh-test
$ gh repo deploy-key add ~/.ssh/gh-test.pub
请参阅上下文中的问题 4242。
上一个:LinkedIn API 访问
评论