HTTPS 克隆私有仓库:密码填访问令牌

简介: 用 HTTPS 克隆 AngusGit 上的私有仓库时,终端要用户名和密码:用户名填登录名,密码填一把只读的访问令牌。令牌怎么生成、怎么让 Git 记住、CI 里怎么用才不泄露,以及过期或认证失败时怎么处理,都按步骤说明。

这篇讲用 HTTPS 地址克隆 AngusGit 私有仓库时,用户名和密码分别填什么。看完你可以生成一把只读、只对当前仓库有效的访问令牌,用它完成克隆,并在本机或 CI 里保存这把令牌,避免写进克隆地址。

下文用 AngusGit 线上实例上的真实私有仓库 https://git.anguskit.com/anguskit/AngusKit.git 做示例。照着做时,换成你自己的仓库地址。要用 SSH 密钥,或者要第一次往空仓库推代码,见文末参考里的第一次推送一文。

1. 用户名和密码各填什么

终端问的 填什么 说明
Username for 'https://git.anguskit.com': 你的 AngusGit 登录名 不是团队名,也不是仓库所有者。示例里的所有者是团队 anguskit,用户名仍填你自己的登录名
Password for 'https://<登录名>@git.anguskit.com': 访问令牌 登录密码也能用,但令牌更安全,原因见下

推荐令牌而不用登录密码,有三个原因:

  • 登录密码能登录整个控制台。它一旦被存进凭据缓存或脚本又泄露出去,别人能做的远不止克隆代码。令牌只用于 Git 克隆和推送,不能用来登录控制台。
  • 令牌可以只给 git:read,只给某几个仓库。即使泄露,别人也只能读这几个仓库。
  • 令牌有过期时间,也能单独吊销。吊销一把令牌,不影响你的登录密码和其他令牌。

2. 生成一把只读令牌

  1. 打开令牌页

    侧栏点 我的,切到 访问令牌 页签,点 生成新令牌。

  2. 名称、期限和身份确认

    令牌名称 写清用途,例如「笔记本克隆 AngusKit」,以后在列表里一眼能认出来。过期时间 和下一步的权限,生成之后都不能再改,要一次选对。过期时间 可选 30天、60天、90天 或 365天。密码验证 里输入你当前的登录密码,确认是你本人在操作。

  3. 只给需要的权限

    权限范围 勾选 git:read,页面说明是「允许 clone / fetch」。仓库作用域 选 指定仓库,在列表里勾选 anguskit/AngusKit,权限设为 READ。以后这把令牌只能读这一个仓库。

  4. 马上保存

    点 生成令牌。页面提示「请立即复制此令牌。出于安全考虑,它将不会再次显示。」点 复制,存进你的密码管理器,再点 我已保存此令牌。之后列表里只显示令牌名称,看不到原文;丢了就只能重新生成。

以后还要用这把令牌推送时,权限范围 要勾 git:write,仓库权限设为 WRITE。只设 WRITE 而不勾 git:write,页面会提示「仓库授予 WRITE 时必须同时勾选 git:write」。

3. 克隆

git clone https://git.anguskit.com/anguskit/AngusKit.git

终端先打印 Cloning into 'AngusKit'...,然后依次出现两个提示:

Username for 'https://git.anguskit.com':
Password for 'https://<登录名>@git.anguskit.com':

第一个填登录名,第二个粘贴刚才保存的令牌。粘贴时屏幕上不显示任何字符,这是正常的,粘贴完直接回车。接着出现 Receiving objects 的进度,就说明认证已经通过、正在下载。命令结束后当前目录下多出一个 AngusKit 文件夹,克隆就完成了。

4. 让 Git 记住令牌

不想每次拉取都粘贴一遍令牌,就交给系统的凭据管理器保存:

  • macOS: Git 默认使用钥匙串,第一次输入之后自动保存。
  • Windows: Git for Windows 自带凭据管理器,第一次输入之后自动保存。
  • Linux: 下面这一行让 Git 把凭据在内存里保留一段时间(默认 15 分钟),不写入磁盘:
git config --global credential.helper cache

也可以用 credential.helper store 长期保存,但它会把令牌以明文写进 ~/.git-credentials,只适合你一个人用的电脑。

5. 在脚本和 CI 里克隆

CI 机器上没有人来输入密码。这时常见的写法是把令牌拼进地址,例如 https://<登录名>:<令牌>@git.anguskit.com/...。不要这样做:这个地址会被写进克隆出来的 .git/config,还容易出现在构建日志里。

改用请求头传令牌。先把令牌放进 CI 的密钥变量,例如 ANGUSGIT_TOKEN,然后:

git -c http.extraHeader="Authorization: Bearer ${ANGUSGIT_TOKEN}" \
  clone https://git.anguskit.com/anguskit/AngusKit.git

-c 只对这一条命令生效,令牌不会写进 .git/config。之后在这个目录里再执行 git fetch 或 git pull 时,同样要带上这段 -c。

给 CI 用的令牌,单独生成一把:名称写明是哪条流水线,权限范围 只给 git:read,仓库作用域 只选它要拉的仓库。这样流水线出问题时,吊销这一把就行,不影响其他人。

6. 令牌过期了,或者要换一把

访问令牌 列表里,每把令牌都显示状态(活跃、已过期 或 已吊销)、最后使用 时间、使用次数 和 过期于 的日期。

令牌过期或被吊销后,用它克隆或拉取会认证失败。按下面三步换一把:

  1. 按第 2 节重新生成一把令牌。
  2. 清掉 Git 缓存的旧令牌,否则 Git 会一直拿旧的去试:
printf "protocol=https\nhost=git.anguskit.com\n\n" | git credential reject
  1. 再执行一次 git pull,在提示里填登录名和新令牌。

怀疑令牌泄露时,在列表里点那一把的 吊销,它会立即失效。吊销全部 会让你所有未过期的令牌同时失效,用到这些令牌的脚本和 CI 也会一起停止工作,点之前先想清楚有哪些地方在用。

7. 克隆失败时

你看到的 原因 怎么处理
fatal: Authentication failed for 'https://git.anguskit.com/anguskit/AngusKit.git/' 令牌已过期或已吊销;令牌复制时少了字符;用户名填的不是令牌主人的登录名;令牌的 指定仓库 里没有这个仓库;或者 Git 缓存的还是旧令牌 到 访问令牌 列表看这把令牌的状态和仓库作用域。用户名填你自己的登录名。缓存过旧令牌时,按第 6 节执行 git credential reject 后重试
fatal: could not read Username for 'https://git.anguskit.com': terminal prompts disabled 在没有终端交互的环境里(CI、脚本)克隆,Git 想问用户名却问不了 按第 5 节用 http.extraHeader 传令牌
fatal: repository 'https://git.anguskit.com/anguskit/AngusKit.git/' not found 地址里的所有者或仓库名写错了 打开仓库代码页,点绿色的 代码 按钮,从 Clone 面板重新复制地址
克隆正常,推送被拒绝 令牌的权限范围只有 git:read,或者仓库权限只有 READ 推送需要 git:write 加 WRITE。令牌的 编辑 只能改名称和描述,不能改权限,所以要另外生成一把用于推送

常见问题

改了登录密码,令牌要跟着换吗?

不用。令牌和登录密码互相独立。改密码之后,令牌在有效期内照样能用。

访问令牌能用来调用控制台的接口吗?

不能。访问令牌只用于 Git 的 HTTPS 克隆、拉取和推送。控制台和它的接口仍然通过登录会话访问。

同一台电脑要用两个账号克隆不同的仓库,怎么办?

让凭据按完整路径区分。执行 git config --global credential.useHttpPath true 之后,Git 会按每个仓库的完整地址分别保存凭据,两个账号的令牌不会互相覆盖。

不想管令牌,有别的办法吗?

可以改用 SSH。在 我的 → SSH密钥 登记一次公钥,之后用 SSH 地址克隆和推送都不再需要密码或令牌。做法见文末参考里的第一次推送一文。

小结

HTTPS 克隆私有仓库时,用户名填登录名,密码填访问令牌。只读的场景,生成一把只勾 git:read、只选目标仓库的令牌,生成后马上存好。日常使用交给系统凭据管理器记住;CI 里用 http.extraHeader 传令牌,不拼进地址。令牌过期就重新生成一把,再用 git credential reject 清掉旧缓存;怀疑泄露就单独吊销那一把。

结论: HTTPS 克隆私有仓库时,用户名填 AngusGit 登录名,密码填 我的 → 访问令牌 生成的 git:read 令牌;CI 中使用 http.extraHeader 传参,避免把令牌写进克隆 URL。

相关文章
|
云安全 安全 网络安全
|
7天前
|
JavaScript 安全 前端开发
Nodejs Brotli decoder 代码执行漏洞 (CVE-2026-111497)10629
Node.js发布安全更新修复Brotli解码器高危RCE漏洞(CVE-2026-111497),建议受影响版本用户立即升级。
2009 1
|
14天前
|
JSON 程序员 数据格式
最新版Notepad++下载、安装、配置保姆级教程(附官网安装包)
Notepad++ 是一款免费开源、轻量快速的 Windows 文本编辑器,支持多标签、语法高亮、代码折叠与宏录制,体积小、启动快、资源占用低,兼容 x64/x32/ARM 架构,是程序员和文字工作者的高效利器。
3200 0
|
13天前
|
人工智能 API 开发工具
DeepSeek Harness 神插件:白嫖 13 家大厂模型
`dsh-our-free-model` 是 DeepSeek Harness 神级插件:零配置、零API Key、零账号,聚合13家大厂免费模型(含DeepSeek V4.1 Flash、Kimi K3等),支持本地网关、用量看板与自动降级,真正实现“白嫖即用”。
2295 44
|
10天前
|
Web App开发 人工智能 前端开发
2026 年 AI 浏览器怎么选?Ego Lite、Tabbit、Chrome DevTools MCP 深度对比,开发者到底该用哪个?
2026年AI浏览器选型指南:Ego Lite专注多Agent协同(Mac优先),Tabbit国产首选,原生支持Windows与Codex控制;Chrome DevTools MCP非浏览器而是开发者利器,深度集成Console/Network/Performance调试能力,让AI真正“看懂并验证”前端代码。
1434 3
|
7天前
|
安全 应用服务中间件 Go
PHP2Shell 漏洞拆解:WordPress 与 nginx 为何中招
PHP2Shell 双 RCE 已遭在野利用:WordPress、Drupal 全在射程内,nginx 其实另有洞。拆成因与修复顺序
PHP2Shell 漏洞拆解:WordPress 与 nginx 为何中招
|
8天前
|
开发者 索引
DeepSeekHarness大肥鱼自带插件市场了?加个地址就能用
Open Plugin Market 是一个开放插件索引平台,收录800+优质DSH插件,支持分类浏览、智能推荐与随机发现。无需安装市场,粘贴索引地址即可一键接入,网页版直访 dshopen.org,助力小开发者被看见。(239字)
1746 1
DeepSeekHarness大肥鱼自带插件市场了?加个地址就能用
|
6天前
|
人工智能 Linux API
Magpie, 轻量本地AI网关!免费Token用不完!
Magpie 是开源AI编程模型调度网关,上线一月获1.8万Star。它通过本地高性能网关统一托管多平台API密钥、账号与免费额度,实现跨Agent的模型秒级切换、静默额度轮换与资源复用,显著降低碎片化管理成本。(239字)
Magpie, 轻量本地AI网关!免费Token用不完!
|
6天前
|
安全 程序员 应用服务中间件
PHP 被曝两大致命漏洞,请所有程序员抓紧做这件事!
PHP 官方发布了紧急安全更新,一口气修复了两个严重漏洞。如果网站和服务器用了 PHP 应该怎么处理?漏洞的原理是什么?本文给你讲清楚
704 0