🚨 GitHub SSH 连接失败解决方案(密码错误 / Permission denied) 最好的解决办法还是修复DNS(源头(本机、路由器、交换机)解决不了就本地解决,一下方法)
错误信息示例:
Permission denied, please try again. ssh用不了,强行跳至https才会要账号密码
❓ 问题原因
这种情况通常出现在以下几种情况之一:
/etc/hosts中错误地将github.com指向了127.0.0.1或::1(本机),导致 SSH 实际连接的是自己- GitHub 远程 IP 变化,而 SSH 的 known_hosts 中记录了旧的公钥,触发了“主机密钥不匹配”警告
- SSH 公钥没有正确添加到 GitHub
- 本地仓库使用的是 HTTPS 或密钥未加载
✅ 解决步骤(推荐操作顺序)
1. 检查并修复 /etc/hosts
bash
vim /etc/hosts➡️ 添加或更新如下内容(可通过 ping github.com 或在线 DNS 工具获取 IP):
bash
20.205.243.166 github.com🔍 说明:确保系统将 github.com 正确解析为 GitHub 的实际 IP,而不是本地地址 ::1。
2. 确认 SSH 能连接 GitHub
bash
ssh -T git@github.com➡️ 成功会输出如下内容:
bash
Hi your-username! You've successfully authenticated, but GitHub does not provide shell access.🔍 说明:这是 GitHub 给你的 SSH 欢迎提示,说明连接和认证都成功了。
3. 清除旧的 SSH 主机密钥记录
bash
sed -i '4d' /root/.ssh/known_hosts或者使用更保险的方式(推荐):
bash
ssh-keygen -R github.com🔍 说明:当 GitHub 的 IP 或主机密钥变更时,SSH 会报 REMOTE HOST IDENTIFICATION HAS CHANGED 错,这步可以清理掉旧记录。
4. 重新生成 SSH 公钥
bash
ssh-keygen -t rsa -b 4096 -C "1451592168@qq.com"一路回车即可(默认保存在 ~/.ssh/id_rsa)
🔍 说明:这一步会生成一对新的私钥和公钥文件:
- 私钥:
~/.ssh/id_rsa - 公钥:
~/.ssh/id_rsa.pub
5. 将生成的公钥添加到 GitHub
- 登录 https://github.com
- 点击右上角头像 → Settings
- 左侧点击 SSH and GPG keys
- 点击 New SSH key
- 填写标题,将
~/.ssh/id_rsa.pub内容复制粘贴进去
bash
cat ~/.ssh/id_rsa.pub🔍 说明:GitHub 必须信任你的公钥,才能使用 SSH 无密码访问。
🚧 为什么这个问题会“突然出现”?
常见原因如下:
- 网络环境改变:比如你从公司切换到家庭网络,DNS 结果不同。
- 使用内网穿透或本地代理:可能误将
github.com解析到本地或拦截地址(例如127.0.0.1)。 - GitHub 更换服务器或 IP:GitHub 不定期会更换负载均衡后的 IP,导致之前 known_hosts 中记录的公钥失效。
- 系统自动篡改 hosts(某些脚本/安全软件):也可能是你系统中某脚本或工具修改了
/etc/hosts文件。
📌 附:常用检测命令
检查 GitHub 解析 IP 是否正确
bash
getent hosts github.com➡️ 正常应为类似 20.x.x.x github.com,不要是 127.0.0.1 或 ::1
查看当前仓库远程地址
bash
git remote -v确保使用的是:
git@github.com:your-username/your-repo.git而不是:
https://github.com/your-username/your-repo.git
Backy文档