访问 GitHub 密钥
Access GitHub Secret Key
我不知道如何处理密钥。
我已经在 GitHub 上发布了一个带有密钥的回购协议(我现在知道了,大不不),然后在设置中找到了 GitHub 密钥并存储了密钥那里。
那么,两个问题:
- 清除提交历史以使密钥不再可用的最佳方法是什么?
- 我如何实际访问此密钥?在我的 settings.py 中,我现在有
SECRET_KEY = 'name_of_key_on_github'
但抛出 NameError: not defined
.
感谢任何帮助,谢谢。
更新
好的,所以根据@VonC提供的link,我需要在.github/workflows
目录下创建一个.yml文件
general.yml
name: key #needed but name can be arbitrary
on: [push, pull_request, deployment]
env:
runs-on: ubuntu-latest
- uses: actions/labeler@v2
with:
repo-token: ${{ secrets.name_of_my_key }}
credentials: #these don't work yet, if anyone can tell me why?
username: ${{ github.actor }}
password: ${{ secrets.ghcr_token }}
settings.py
SECRET_KEY = "../.github/general.yml"
项目结构如果你想/需要复现:
myrepo
├── app_name
│ ├── settings.py
├── .github
│ ├── workflows
│ │ ├── general.yml
我可以 运行 python manage.py runserver
,但是在推送到远程时出现以下错误:
! [remote rejected] master -> master (refusing to allow a Personal Access Token to create or update workflow `.github/workflows/general.yml` without `workflow` scope)
更新 2
没有启用工作流范围(github.com > 配置文件 > 设置 > 开发人员设置 > 个人访问令牌):
您需要确保复选框已选中。
使用 new git filter-repo
, which does replace the old git filter-branch
or BFG.
它有 many usage examples,包括基于内容的过滤,以便您在过去的提交中远程访问 path/to/secret
文件:
To keep all files except these paths, just add --invert-paths
:
git filter-repo --path path/to/secret --invert-paths
您可以添加 --dry-run
以在实际更改存储库之前对其进行测试。
然后 git push --force
(这确实会重写您存储库的历史记录,因此请务必通知任何其他协作者)
因为必须在新的克隆上完成:
- 不要对您当前的克隆文件夹进行任何操作
- 创建存储库的单独克隆,在其中执行过滤器存储库
- 在第二个克隆中,现在已清理(历史上不再有大文件),从您的第一个存储库导入您的工作
即对于第3点:
cd /path/to/second/clone
git --work-tree=/path/to/first/original/clone add .
git commit -m "Import work from first clone"
git push --force
关于 git gilter-repo,请参阅“Removing sensitive files from git from Boopathi Rajaa.
中的完整示例
您可以存储加密密钥,但可用于 GitHub Actions only。
在 GitHub 操作之外,请参阅 Github, secret keys and other local settings from Paul Smits。
为此,您需要一个凭证 (PAT) with workflow scope。
我不知道如何处理密钥。
我已经在 GitHub 上发布了一个带有密钥的回购协议(我现在知道了,大不不),然后在设置中找到了 GitHub 密钥并存储了密钥那里。
那么,两个问题:
- 清除提交历史以使密钥不再可用的最佳方法是什么?
- 我如何实际访问此密钥?在我的 settings.py 中,我现在有
SECRET_KEY = 'name_of_key_on_github'
但抛出NameError: not defined
.
感谢任何帮助,谢谢。
更新
好的,所以根据@VonC提供的link,我需要在.github/workflows
目录下创建一个.yml文件
general.yml
name: key #needed but name can be arbitrary
on: [push, pull_request, deployment]
env:
runs-on: ubuntu-latest
- uses: actions/labeler@v2
with:
repo-token: ${{ secrets.name_of_my_key }}
credentials: #these don't work yet, if anyone can tell me why?
username: ${{ github.actor }}
password: ${{ secrets.ghcr_token }}
settings.py
SECRET_KEY = "../.github/general.yml"
项目结构如果你想/需要复现:
myrepo
├── app_name
│ ├── settings.py
├── .github
│ ├── workflows
│ │ ├── general.yml
我可以 运行 python manage.py runserver
,但是在推送到远程时出现以下错误:
! [remote rejected] master -> master (refusing to allow a Personal Access Token to create or update workflow `.github/workflows/general.yml` without `workflow` scope)
更新 2
没有启用工作流范围(github.com > 配置文件 > 设置 > 开发人员设置 > 个人访问令牌):
您需要确保复选框已选中。
使用 new git filter-repo
, which does replace the old git filter-branch
or BFG.
它有 many usage examples,包括基于内容的过滤,以便您在过去的提交中远程访问 path/to/secret
文件:
To keep all files except these paths, just add
--invert-paths
:git filter-repo --path path/to/secret --invert-paths
您可以添加 --dry-run
以在实际更改存储库之前对其进行测试。
然后 git push --force
(这确实会重写您存储库的历史记录,因此请务必通知任何其他协作者)
因为必须在新的克隆上完成:
- 不要对您当前的克隆文件夹进行任何操作
- 创建存储库的单独克隆,在其中执行过滤器存储库
- 在第二个克隆中,现在已清理(历史上不再有大文件),从您的第一个存储库导入您的工作
即对于第3点:
cd /path/to/second/clone
git --work-tree=/path/to/first/original/clone add .
git commit -m "Import work from first clone"
git push --force
关于 git gilter-repo,请参阅“Removing sensitive files from git from Boopathi Rajaa.
中的完整示例您可以存储加密密钥,但可用于 GitHub Actions only。
在 GitHub 操作之外,请参阅 Github, secret keys and other local settings from Paul Smits。
为此,您需要一个凭证 (PAT) with workflow scope。