在VS Code中使用Git时反复出现"Permission Denied: (Public Key)"错误怎么办?
别慌,这个问题在Git通过SSH连接GitHub时太常见了,我帮你一步步排查解决:
第一步:检查本地是否有SSH密钥对
打开终端,运行命令查看已有的SSH密钥:ls -la ~/.ssh如果输出里没有
id_ed25519/id_ed25519.pub或者id_rsa/id_rsa.pub这类文件,说明你还没生成密钥。那咱们生成一个新的:ssh-keygen -t ed25519 -C "你的GitHub绑定邮箱"按回车默认保存路径,再按两次回车跳过密码设置(也可以设置密码增强安全性)。
第二步:把公钥添加到GitHub账户
先复制公钥内容,运行:cat ~/.ssh/id_ed25519.pub # 如果是RSA密钥就换成id_rsa.pub全选复制输出内容,打开GitHub,点击右上角头像→Settings→SSH and GPG keys→New SSH key,随便填个Title,把公钥粘贴到Key框里,点击Add SSH key保存。
第三步:测试SSH连接是否正常
回到终端,运行:ssh -T git@github.com如果看到类似
Hi 你的GitHub用户名! You've successfully authenticated, but GitHub does not provide shell access.的提示,说明SSH连接已经没问题了。第四步:确认VS Code用的Git环境正确
有时候VS Code和终端用的不是同一个Git环境,导致密钥没生效。打开VS Code设置(快捷键Ctrl+,),搜索git.path,确认路径和终端里which git输出的路径一致。如果不一致,改成终端里的Git路径就行。第五步:让SSH Agent加载你的密钥
有些系统不会自动加载SSH密钥,咱们手动操作:eval "$(ssh-agent -s)" ssh-add ~/.ssh/id_ed25519 # RSA密钥换成id_rsa完成后再去VS Code里尝试拉取/推送,应该就能正常操作了。
额外检查:确认远程仓库URL是SSH格式
运行git remote -v查看远程地址,如果是HTTPS格式(比如https://github.com/username/repo.git),可以改成SSH格式:git remote set-url origin git@github.com:你的用户名/你的仓库名.git
内容的提问来源于stack exchange,提问作者Jared Ross

