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

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

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

首先我使用的是 https 协议,而不是 ssh,这就意味着 Git 不会去查 ~/.ssh/id_rsaid_ed 25519

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

➜ /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 帮我代理了认证,检查了一下果然如此:

➜  /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 成功

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

最后修改:2025 年 10 月 10 日
如果觉得我的文章对你有用,请随意赞赏