> For AI agents: the site index is available at https://www.juniortree.com/llms.txt; this page is available as Markdown at https://www.juniortree.com/blog/auto-git-auth.md.
> 使用HTTPS推送时，VS Code的Remote-SSH自动通过本地OAuth token完成认证，安全便捷

## Page metadata

- **Published:** 2025-10-10
- **Updated:** 2025-10-10
- **Tags:** 计算机
- **Source URL:** https://www.juniortree.com/blog/auto-git-auth

# 神秘事件之Git自动授权Push

今天在使用 CNB 的云开发平台的时候出现了一个很神奇的事情，我尝试设置 git 的 `remote` 为 github 的仓库链接，此时我还没有在服务器上配置对应的密钥，我配置完成之后很自然地就 push 了，很神奇的是居然自动就 push 成功了

我当时被吓了一跳，因为我没有在 CNB 上设置或者链接我的 github ，我很担心是不是因为什么神秘原因导致我的凭证泄漏

我是使用 Cursor 的 Remote-SSH 连接到 CNB 的云开发环境的，你可以理解为就是使用 VS Code 来搞这个事情的

首先我使用的是 `https` 协议，而不是 `ssh`，这就意味着 Git 不会去查 `~/.ssh/id_rsa` 或 `id_ed 25519`

我尝试检查了一下是不是因为本地有凭证或者什么奇怪的原因，后来啥也没找到：

```bash
➜ /workspace git:(main) git config --global credential.helper

➜ /workspace git:(main) env | grep GITHUB

➜ /workspace git:(main) cat ~/.git-credentials cat: /root/.git-credentials: No such file or directory

➜ /workspace git:(main)
```

按道理说不应该是能 Push 成功，更何况我这个是私库

所以应该就是 Remote-SSH 帮我代理了认证，检查了一下果然如此：

```bash
➜  /workspace git:(main) env | grep VSCODE

VSCODE_GIT_ASKPASS_NODE=...
VSCODE_GIT_ASKPASS_MAIN=.../extensions/git/dist/askpass-main.js
VSCODE_GIT_IPC_HANDLE=/tmp/vscode-git-143989b7b9.sock
```

当 Git 在远程服务器上执行时（例如你输入 git push）：

1. Git 检测到 `HTTPS URL` 需要身份验证
2. 它调用了环境变量里的 “`askpass`” 脚本：→ ` VSCODE_GIT_ASKPASS_MAIN `
3. 这个脚本通过 IPC 套接字（`VSCODE_GIT_IPC_HANDLE`）把请求发回你的本地 VS Code 客户端
4. 你的 VS Code（在本地登录过 GitHub）自动返回一个有效的 OAuth token
5. GitHub 接受请求，Push 成功

所以其实登陆凭证还是存在自己的电脑上的，并没有被拷贝到服务器上，从这一点上说其实是安全的
