今天在使用 CNB 的云开发平台的时候出现了一个很神奇的事情,我尝试设置 git 的 remote
为 github 的仓库链接,此时我还没有在服务器上配置对应的密钥,我配置完成之后很自然地就 push 了,很神奇的是居然自动就 push 成功了
我当时被吓了一跳,因为我没有在 CNB 上设置或者链接我的 github ,我很担心是不是因为什么神秘原因导致我的凭证泄漏
我是使用 Cursor 的 Remote-SSH 连接到 CNB 的云开发环境的,你可以理解为就是使用 VS Code 来搞这个事情的
首先我使用的是 https
协议,而不是 ssh
,这就意味着 Git 不会去查 ~/.ssh/id_rsa
或 id_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):
- Git 检测到
HTTPS URL
需要身份验证 - 它调用了环境变量里的 “
askpass
” 脚本:→VSCODE_GIT_ASKPASS_MAIN
- 这个脚本通过 IPC 套接字(
VSCODE_GIT_IPC_HANDLE
)把请求发回你的本地 VS Code 客户端 - 你的 VS Code(在本地登录过 GitHub)自动返回一个有效的 OAuth token
- GitHub 接受请求,Push 成功
所以其实登陆凭证还是存在自己的电脑上的,并没有被拷贝到服务器上,从这一点上说其实是安全的