如何通过终端创建GitHub个人访问令牌(PAT)?
通过终端创建GitHub个人访问令牌(PAT)的方法
不是只能通过GitHub网页界面创建PAT,你可以借助GitHub REST API配合终端工具实现,也能在Terraform里通过调用API完成自动化创建,以下是具体方案:
1. 使用curl调用GitHub REST API创建PAT
GitHub提供了创建用户访问令牌的REST接口,你可以通过终端发送请求完成创建。
方式1:用户名+密码+双因素认证(2FA)
如果账号开启了2FA,需要同时提供一次性验证码:
curl -u "你的GitHub用户名" -X POST https://api.github.com/user/tokens \ -H "X-GitHub-OTP: 你的2FA验证码" \ -d '{"note":"终端生成的PAT","scopes":["repo","gist","read:user"]}'
note:给令牌添加备注,方便后续识别用途scopes:指定令牌的权限范围,可根据需求调整(比如repo用于仓库操作,admin:org用于组织管理等)
方式2:使用已有PAT创建新令牌
如果你已经有一个具备write:user权限的PAT,可以直接用它来创建新令牌:
curl -X POST https://api.github.com/user/tokens \ -H "Authorization: token 你的已有PAT" \ -d '{"note":"基于现有PAT生成的新令牌","scopes":["repo","admin:repo_hook"]}'
2. 在Terraform中自动化创建PAT
虽然GitHub官方Terraform Provider没有提供直接创建PAT的资源,但可以通过null_resource配合local-exec调用上述API实现:
resource "null_resource" "github_pat_creation" { provisioner "local-exec" { command = <<EOT curl -X POST https://api.github.com/user/tokens \ -H "Authorization: token ${var.existing_github_pat}" \ -d '{"note":"Terraform自动化生成的PAT","scopes":["repo"]}' EOT } } variable "existing_github_pat" { type = string description = "具备write:user权限的已有GitHub PAT" }
关于GitHub CLI(gh)
目前gh确实没有内置的PAT创建命令,官方暂未支持该功能,所以暂时只能通过上述API方式在终端实现。
内容的提问来源于stack exchange,提问作者Vertexwahn
相关产品推荐
相关产品推荐

