soarli

彻底解决 Git 报错 HTTP Basic: Access denied 的终极指南(附 Ubuntu 服务器配置实战)
如果你在尝试使用 git clone、git pull 或 git push 时,终端突然无情地抛出下面这段鲜红的...
扫描右侧二维码阅读全文
02
2026/05

彻底解决 Git 报错 HTTP Basic: Access denied 的终极指南(附 Ubuntu 服务器配置实战)

如果你在尝试使用 git clonegit pullgit push 时,终端突然无情地抛出下面这段鲜红的错误提示,请不要慌张——你绝对不是一个人:

remote: HTTP Basic: Access denied.
fatal: Authentication failed for '[https://gitlab.com/](https://gitlab.com/)...'

在现代开发流程中,这是一个极其高频出现的报错。本文将带你从根本上剖析这个错误的原因,并提供涵盖 个人电脑(Windows/macOS) 以及 无图形化界面的 Ubuntu 服务器 的全场景终极解决方案。


🧐 为什么会突然报这个错?

长话短说:时代变了,平台变得更注重安全了。

为了防止由于密码泄露导致的代码库被恶意篡改,主流的代码托管平台(如 GitLab、GitHub 等)已经全面弃用了“直接使用账号和登录密码通过 HTTPS 进行 Git 操作”的传统方式。

当你遇到这个报错时,通常是因为碰到了以下三个雷区之一:

  1. 你依然习惯性地在终端里输入了你的网页登录密码,而不是个人访问令牌(Token)
  2. 你之前配置的 Token 已经过期失效了。
  3. 你生成的 Token 权限不足(例如缺少了 write_repository 权限,导致无法 Push 代码)。

要解决这个问题,我们有两条路可以走:一是拥抱 SSH 密钥(强烈推荐),二是正确配置访问令牌(Token)


🌟 方案一:改用 SSH 密钥连接(一劳永逸,服务器首选)

无论是在个人电脑还是 Ubuntu 服务器上,配置 SSH 都是最优雅、最安全的解决方案。它能让你彻底告别频繁输入密码或 Token 的烦恼,实现真正的免密丝滑操作。

第一步:在本地或服务器生成 SSH 密钥

打开你的终端(Windows 用户请打开 Git Bash,Mac/Ubuntu 用户直接打开 Terminal),输入以下命令(记得把邮箱替换成你注册 GitLab 的邮箱):

ssh-keygen -t ed25519 -C "your_email@example.com"

💡 贴心提示: 遇到提示时,一路狂按回车键(Enter)即可。强烈建议不要设置额外的密码(passphrase),这样才能实现自动化和纯正的免密操作。

第二步:提取公钥

密钥生成后,你需要查看并复制你的“公钥”。执行以下命令:

cat ~/.ssh/id_ed25519.pub

此时终端会打印出一长串以 ssh-ed25519 开头的字符。将其完整复制下来。

第三步:将公钥交还给 GitLab

  1. 登录你的 GitLab 网页版。
  2. 点击右上角头像,进入 Preferences (偏好设置)
  3. 在左侧导航栏找到 SSH Keys
  4. 点击 Add new key,将刚才复制的那长串代码粘贴到文本框中,点击保存。

第四步:测试连接并修改项目地址

在终端里测试一下 SSH 连通性:

ssh -T git@gitlab.com

(首次连接输入 yes 回车即可,若看到 Welcome to GitLab... 即代表大功告成!)

接下来,进入你报错的项目目录,把旧的 HTTPS 地址替换成崭新的 SSH 地址:

# 进入你的项目目录
cd /path/to/your/project

# 修改远程仓库地址为 SSH 格式 (请将下方地址替换为你项目的实际 SSH 链接)
git remote set-url origin git@gitlab.com:username/project.git

再次执行 git pull,你会发现世界瞬间清静了,代码瞬间拉下来了。


🛠️ 方案二:生成并使用个人访问令牌 Token(HTTPS 备用方案)

如果你所在的公司网络或服务器环境受到严格的防火墙限制(例如封锁了 SSH 专用的 22 端口),导致你只能使用 HTTPS 协议,那么你就必须通过配置 Token 来解决。

第一步:在 GitLab 网页端生成 Token

  1. 登录 GitLab,进入个人资料设置里的 Access Tokens (访问令牌) 页面。
  2. 点击 Add new token
  3. 起个名字,设置一个较长的过期时间。
  4. 核心步骤: 在权限(Scopes)选项中,务必勾选 read_repositorywrite_repository
  5. 点击创建后,页面顶端会生成一串字符。立刻复制并妥善保存它!(刷新页面后它将永远消失)。

第二步:配置环境并应用 Token

根据你所处的操作系统环境,让 Git 接受这个新 Token:

💻 Windows 环境:清除旧凭据

Windows 可能会死死抱住你的旧密码不放。你需要手动“失忆”:

  1. 打开控制面板 -> 凭据管理器 -> Windows 凭据
  2. 找到对应的 GitLab 地址,点击 删除编辑
  3. 回到终端重试 git pull,当要求输入密码时,直接粘贴你生成的 Token

🍎 macOS 环境:清理钥匙串

  1. Cmd + Space 调出搜索,打开 钥匙串访问 (Keychain Access)
  2. 搜索 gitlab.com,找到对应的应用密码并删除
  3. 回到终端重试,输入用户名,密码处粘贴生成的 Token

🐧 Ubuntu 服务器环境:设置凭据长效记忆

在没有图形界面的 Ubuntu 服务器上,如果每次 git pull 都要手动敲那串乱码一样的 Token,绝对会让人抓狂。我们可以让 Git 把它“背”下来:

  1. 在终端执行以下命令,开启全局凭证存储:
git config --global credential.helper store
  1. 进入项目目录,执行拉取命令:
git pull
  1. 根据提示输入你的 Username,在 Password 提示处,粘贴你的 Token

只要成功拉取一次,Ubuntu 就会将凭证静默保存在家目录的 .git-credentials 文件中。以后的任何 Git 操作,它都不会再来烦你了。

⚠️ 服务器安全警告: .git-credentials 是明文存储配置的。如果这台 Ubuntu 服务器有其他非信任人员共享登录权限,请谨慎使用该命令,以免 Token 泄露。


总结

当你再次遇到 HTTP Basic: Access denied 时,只需记住两句口诀:

  • 能用 SSH 就用 SSH,一次配置,终身免密。
  • 只能用 HTTPS 就换 Token,记得清理旧缓存。

希望这篇指南能帮你顺利扫除 Git 权限报错的障碍,让你把宝贵的时间留给真正的代码创作。Happy Coding! 🚀

最后修改:2026 年 05 月 09 日 05 : 20 PM

发表评论