使用Visual Studio操作GitHub遇Permission Denied(publickey)错误求助
解决Visual Studio SSH连接GitHub权限被拒的问题
我之前也碰到过几乎一模一样的情况!Visual Studio有时候会和Git Bash用的不是同一套Git环境或凭据配置,尤其是当你已经有HTTPS方式的GitLab仓库配置在VS里时,很容易出现SSH冲突。试试下面这些具体的解决方法:
统一Visual Studio和Git Bash使用的Git版本
VS可能自带了独立的Git,或者调用的系统Git和Git Bash用的不是同一个。打开VS,进入工具 > 选项 > 源代码管理 > Git全局设置,查看「Git可执行文件路径」,再对比Git Bash里执行which git得到的路径。如果不一致,把VS里的路径改成Git Bash使用的那个,确保SSH配置能统一生效。确认项目远程仓库的SSH地址
有时候VS会默认沿用HTTPS格式的远程地址,或者不小心被切换了。你可以:- 在VS里打开GitHub项目,点击
Git > 管理分支 - 右键远程仓库(origin)选择「属性」,确认地址是
git@github.com:你的用户名/项目名.git - 如果是HTTPS格式,直接修改成SSH地址;也可以在Git Bash进入项目目录,执行
git remote set-url origin git@github.com:你的用户名/项目名.git来更新
- 在VS里打开GitHub项目,点击
清除Windows凭据管理器里的Git缓存
之前配置的GitLab HTTPS凭据可能被VS缓存,干扰SSH连接:- 打开「控制面板 > 用户账户 > 凭据管理器 > Windows凭据」
- 找到所有和git相关的条目(比如gitlab.com、github.com开头的),全部删除
- 重启Visual Studio后再尝试推拉代码
在VS里强制指定SSH密钥路径
可以直接修改Git全局配置,让VS明确使用你的GitHub SSH密钥:- 在VS里进入
工具 > 选项 > 源代码管理 > Git全局设置,点击「编辑.gitconfig」 - 添加以下内容(替换成你自己的SSH密钥路径):
[core] sshCommand = "ssh -i C:/Users/你的用户名/.ssh/id_rsa"如果公司网络需要代理,就改成带代理的命令:
[core] sshCommand = "ssh -i C:/Users/你的用户名/.ssh/id_rsa -o ProxyCommand='connect -S 代理地址:端口 %h %p'"- 在VS里进入
在VS的Git命令窗口验证SSH连接
打开VS的「Git命令窗口」(视图 > 其他窗口 > Git命令窗口),执行ssh -T git@github.com,如果返回Hi 你的用户名! You've successfully authenticated...,说明SSH连接正常,再尝试推拉代码;如果报错,就回到第一步检查Git路径是否正确。
内容的提问来源于stack exchange,提问作者Neve




