You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

使用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格式的远程地址,或者不小心被切换了。你可以:

    1. 在VS里打开GitHub项目,点击Git > 管理分支
    2. 右键远程仓库(origin)选择「属性」,确认地址是git@github.com:你的用户名/项目名.git
    3. 如果是HTTPS格式,直接修改成SSH地址;也可以在Git Bash进入项目目录,执行git remote set-url origin git@github.com:你的用户名/项目名.git来更新
  • 清除Windows凭据管理器里的Git缓存
    之前配置的GitLab HTTPS凭据可能被VS缓存,干扰SSH连接:

    1. 打开「控制面板 > 用户账户 > 凭据管理器 > Windows凭据」
    2. 找到所有和git相关的条目(比如gitlab.com、github.com开头的),全部删除
    3. 重启Visual Studio后再尝试推拉代码
  • 在VS里强制指定SSH密钥路径
    可以直接修改Git全局配置,让VS明确使用你的GitHub SSH密钥:

    1. 在VS里进入工具 > 选项 > 源代码管理 > Git全局设置,点击「编辑.gitconfig」
    2. 添加以下内容(替换成你自己的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的Git命令窗口验证SSH连接
    打开VS的「Git命令窗口」(视图 > 其他窗口 > Git命令窗口),执行ssh -T git@github.com,如果返回Hi 你的用户名! You've successfully authenticated...,说明SSH连接正常,再尝试推拉代码;如果报错,就回到第一步检查Git路径是否正确。


内容的提问来源于stack exchange,提问作者Neve

火山引擎 最新活动