当前位置: 首页 > news >正文

在 Windows 系统中解决 Git 推送时出现的 Permission denied (publickey) 错误,请按照以下详细步骤操作:

完整解决方案步骤:

1. 检查并生成 SSH 密钥

# 打开 Git Bash
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
  • 全程按回车(使用默认路径,不设密码)

  • 密钥将生成在:C:\Users\<用户名>\.ssh\ 目录下

2. 添加密钥到 SSH Agent
# 启动 ssh-agent
eval $(ssh-agent -s)# 添加私钥
ssh-add ~/.ssh/id_rsa
3. 复制公钥到剪贴板
# 方法1:使用 clip 命令
cat ~/.ssh/id_rsa.pub | clip# 方法2:手动打开文件
explorer .
# 然后打开 .ssh 文件夹,用记事本打开 id_rsa.pub 文件
4. 在 Gitee 添加公钥
  1. 登录 gitee.com

  2. 右上角头像 → 设置 → SSH 公钥

  3. 标题:Windows PC(可自定义)

  4. 粘贴公钥内容(以 ssh-rsa AAA... 开头)

  5. 点击 确定

5. 验证连接
ssh -T git@gitee.com

✅ 成功提示:Hello <你的用户名>! You've successfully authenticated...

6. 检查并修正远程仓库地址
git remote -v

如果显示 HTTPS 地址(以 https:// 开头),需改为 SSH 地址:

git remote set-url origin git@gitee.com:<用户名>/<仓库名>.git

注意:地址格式必须是 git@gitee.com:用户名/仓库名.git

7. 重新尝试推送
git push -u origin master

常见问题排查:

情况1:密钥未正确加载
# 检查已加载密钥
ssh-add -l# 若无显示,手动添加
ssh-add ~/.ssh/id_rsa
情况2:多密钥冲突

创建 ~/.ssh/config 文件(无后缀名):

Host gitee.comHostName gitee.comIdentityFile ~/.ssh/id_rsaUser git
情况3:Windows 权限问题
  1. 右键点击 .ssh 文件夹 → 属性 → 安全

  2. 确保你的用户有 完全控制 权限

  3. 同样检查 id_rsa 和 id_rsa.pub 文件权限

情况4:防火墙/杀毒软件拦截
  • 临时禁用 Windows Defender 防火墙

  • 将 Git Bash 加入杀毒软件白名单

备选方案:使用 HTTPS 推送

如果 SSH 仍不可用:

# 切换为 HTTPS 地址
git remote set-url origin https://gitee.com/<用户名>/<仓库名>.git# 推送时输入 Gitee 账号密码
git push -u origin master

注意:从 2021 年起,Git 要求使用个人访问令牌代替密码

成功推送后的输出示例:

Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Writing objects: 100% (3/3), 285 bytes | 285.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To gitee.com:yourname/repo.gita1b2c3d..f4e5d6c  master -> master
Branch 'master' set up to track remote branch 'master' from 'origin'.

如果仍然遇到问题,请提供以下信息以便进一步排查:

  1. ssh -T git@gitee.com -v 的完整输出

  2. git remote -v 的输出

  3. 你的公钥文件前10个字符(用于验证是否正确添加)

http://www.xdnf.cn/news/1297225.html

相关文章:

  • 宋红康 JVM 笔记 Day01|JVM介绍
  • [工具]vscode 使用AI 优化代码
  • 使用EvalScope对GPT-OSS-20B进行推理性能压测实战
  • 【完整源码+数据集+部署教程】肾脏病变实例分割系统源码和数据集:改进yolo11-CARAFE
  • 自动化运维实验(二)---自动识别设备,并导出配置
  • AM32电调学习-使用Keil编译uboot
  • 搭建局域网yum源仓库全流程
  • 华为实验 链路聚合
  • GoLand 项目从 0 到 1:第八天 ——GORM 命名策略陷阱与 Go 项目启动慢问题攻坚
  • 更新pip及Python软件包的完整指南
  • STM32HAL 快速入门(七):GPIO 输入之光敏传感器控制蜂鸣器
  • 第3节 深度学习避坑指南:从过拟合到玄学优化
  • 92、23种设计模式-单例模式
  • 【软考架构】信息安全基础知识
  • 考研408《计算机组成原理》复习笔记,第五章(1)——CPU功能和结构
  • 云原生存储架构设计与性能优化
  • 【深度学习计算性能】04:硬件
  • CTFSHOW | nodejs题解 web334 - web344
  • 主进程如何将客户端连接分配到房间进程
  • 数巅中标中建科技AI知识库项目,开启建筑业数智化新篇章
  • 项目日志框架与jar中日志框架冲突 解决
  • MFC的使用——使用ChartCtrl绘制曲线
  • DataHub IoT Gateway:工业现场设备与云端平台安全互联的高效解决方案
  • 使用HalconDotNet实现异步多相机采集与实时处理
  • 零信任架构(Zero Trust Architecture, ZTA)(通过动态验证和最小权限控制,实现对所有访问请求的严格授权和持续监控)
  • Kafka消费者组
  • OpenCV阈值处理详解
  • Docker pull拉取镜像命令的入门教程
  • K8s学习----Namespace:资源隔离与环境管理的核心机制
  • Rabbitmq+STS+discovery_k8s +localpv部署排坑详解