Github Tokens
约 830 字大约 3 分钟
2025-01-02
介绍
当使用 GitHub API
或命令行时,可使用 Personal access token
替代密码向 GitHub
进行身份验证。 Personal access token
旨在代表你自己访问 GitHub
资源。
生成access token
现在有两种生产token
的方式:
- 一种是
Fine-grained tokens
,这种还处于预览阶段。 - 一种是
Tokens(classic)
。
Fine-grained tokens
- 登录
github
账号。 - 点击进入账号的
Setting
。 - 点击
Developer settings
。 - 下拉
Personal access tokens
选择Fine-grained tokens
。 - 点击
Generage new token
。 - 随便填写一个
token
名称。 - 选择过期时间,也可以选择永久。
- 可以添加备注。
- 选择权限,根据需求选择权限,这里可以设置为某一个项目,然后再选择权限。
- 点击生成
token
就行了。
注意需要保存好生成的token
,刷新页面就没了。
Tokens(classic)
- 登录
github
账号。 - 点击进入账号的
Setting
。 - 点击
Developer settings
。 - 下拉
Personal access tokens
选择Tokens(classic)
。 - 下拉
Generage new token
选择Generage new token(classic)
。 - 随便填写一个
token
名称。 - 选择过期时间,也可以选择永久。
- 选择权限,根据需求选择权限。
- 点击生成
token
就行了。
注意需要保存好生成的token
,刷新页面就没了。
使用access token
access token
是用于认证的,有多种使用方式:
- 将
access token
当做密码使用 - 在
CI/CD
自动部署时使用token
获取权限
access token
当做密码
进行git
命令行提交的时候,会让你输入Username
和Password
$ git push
Username for 'https://github.com': username
Password for 'https://username@github.com': 你的token
直接把token
当做Password
输入即可。
直接更改.git/config
文件 (不推荐)
注意:不建议使用这种方式使用,会泄露token
。
- 直接修改
.git
文件
.git/config
是隐藏文件。需要显示出来,mac
快捷键是control + cmd + .
修改 remote
中的 url
为:
url = https://[TOKEN]@github.com/[USER]/[REPO]
- 通过命令更新
$ git remote set-url origin https://[TOKEN]@github.com/[USER]/[REPO]
或:删除现在的远程分支,然后创建新的远程分支。
$ git remote remove origin
$ git remote add origin https://[TOKEN]@github.com/[USER]/[REPO]
其中: TOKEN
是上面申请的token
。 USER
是用户名。 REPO
是仓库名。
配置CI/CD
自动部署时使用access token
虽然access token
能当密码使用,但是一般我们长期使用都是添加公钥到仓库的,这样在本机上就能完成身份认证了。 虽然通过更改.git/config
中的远程地址,达到了使用token
关联到了仓库,但是上面也说了会有暴露的风险。 token
的主要使用地方还是在配置CI/CD
自动部署时。
如下是github actions的一个.yml
配置,里面就使用了token
。只是为了避免token
暴露,通过配置项目的secrets来访问配置的token
的。
name: vueperss deploy
on: [push]
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- name: checkout
uses: actions/checkout@master
- name: vueperss build and deploy
run: |
yarn install
yarn docs:build
cd docs/.vuepress/dist
git init
git config --global user.email ${{ secrets.MT_EMAIL }}
git config --global user.name ${{ secrets.MT_NAME }}
git add -A
git commit -m 'Auto deploy from Github Actions'
git push -f https://${{ secrets.MT_TOKEN }}@github.com/matiastang/matiastang.github.io master