无法连接GitHub但其他Git仓库正常,密钥交换算法协商失败求助
解决GitHub克隆时密钥交换算法协商失败的问题
根据你描述的情况——Win7 64位系统,用Pageant做SSH代理,重装系统后克隆GitHub公库报错密钥交换算法不匹配,但私库、Bitbucket正常,直接ssh连接GitHub能成功——我整理了几个针对性的解决方案,你可以逐一尝试:
方案一:切换到Git自带的OpenSSH(最推荐)
你直接用ssh git@github.com能成功认证,说明Git Bash自带的OpenSSH是兼容GitHub的,问题出在你配置的PuTTY系列工具(plink/TortoisePlink)上。可以让Git改用自带的OpenSSH:
- 打开Git Bash,先检查当前Git的SSH配置:
git config --global core.sshCommand - 如果输出是指向plink或TortoisePlink的路径,执行命令清除该配置:
git config --global --unset core.sshCommand - 检查系统环境变量
GIT_SSH:- 右键「计算机」→「属性」→「高级系统设置」→「环境变量」
- 如果
GIT_SSH的值是plink.exe或TortoisePlink.exe的路径,要么删除这个环境变量,要么把它改成Git自带的ssh.exe路径(通常在C:\Program Files\Git\usr\bin\ssh.exe或C:\Program Files (x86)\Git\usr\bin\ssh.exe,根据你的Git安装位置调整)
- 重启你的Git Bash或PhpStorm,再尝试克隆仓库。
方案二:修复PuTTY工具的密钥交换算法配置
如果你坚持要用PuTTY系列工具,可以调整PuTTY的KEX算法设置:
- 运行
putty.exe,在左侧导航栏依次展开Connection > SSH > Kex - 在「Allowed KEX algorithms」输入框中,确认包含GitHub报错提示的算法:
如果没有,把这些算法添加进去(注意用逗号分隔,不要加空格)curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521 - 回到「Session」界面,选中默认会话后点击「Save」保存配置
- 先手动用plink缓存GitHub的主机密钥:
按提示输入plink git@github.comy保存密钥,之后再执行Git克隆命令,避免交互卡住的问题 - 确认Pageant里已经正确加载了你的SSH密钥(右键任务栏的Pageant图标,查看已加载的密钥)
方案三:更新Git版本
你的Git版本是2.16.2.windows.1,属于比较旧的版本,可能存在一些兼容性问题。Win7支持的最新Git版本是2.33.x系列(后续版本不再支持Win7),你可以更新到这个版本,新版本的自带OpenSSH会支持更多现代密钥交换算法,大概率能解决问题。
验证方法
不管用哪个方案,都可以先执行以下命令查看SSH连接的详细日志,确认密钥交换算法协商成功:
ssh -v git@github.com
如果日志里显示debug1: kex: algorithm: curve25519-sha256@libssh.org(或其他GitHub支持的算法),说明配置没问题,再尝试克隆仓库即可。
内容的提问来源于stack exchange,提问作者brazorf
相关产品推荐
相关产品推荐

