Git 10 ,使用 SSH 提升 Git 操作速度实践指南( Git 拉取推送响应慢 )

目录

前言
一、背景与问题分析
[1.1 Gitee 与项目仓库](#1.1 Gitee 与项目仓库)
[1.2 公钥与仓库的关系](#1.2 公钥与仓库的关系)
[1.3 当前问题表现](#1.3 当前问题表现)
二、检测与准备工作
[2.1 检查当前远程仓库协议](#2.1 检查当前远程仓库协议)
[2.2 检查本地 SSH 公钥](#2.2 检查本地 SSH 公钥)
[2.3 添加公钥到 Gitee](#2.3 添加公钥到 Gitee)
[2.4 配置 .ssh/config 文件(Windows 示例)](#2.4 配置 .ssh/config 文件(Windows 示例))
三、切换地址与验证
[3.1 修改项目远程地址为 SSH](#3.1 修改项目远程地址为 SSH)
[3.2 测试 SSH 连接](#3.2 测试 SSH 连接)
[3.3 测试 Git 操作](#3.3 测试 Git 操作)
四、注意事项与最佳实践
五、本文总结

前言

在日常开发中,我们经常需要从远程代码仓库拉取或推送代码 。在国内,Gitee 是常用的代码托管平台之一 。很多开发者在使用 VS Code 或命令行执行 git pullgit push 时,会遇到速度慢 或者需要频繁输入账号密码 的问题。本文将详细讲解如何通过配置 SSH 公钥 ,使本地项目使用 SSH 协议访问 Gitee 仓库 ,从而提高 Git 操作效率 ,并介绍相关注意事项和配置方法

一、背景与问题分析

1.1 Gitee 与项目仓库

Gitee 是国内领先的 Git 代码托管平台,类似 GitHub。每个开发者的账号下可以有多个仓库(Repository),每个仓库用于存放一个或多个项目的代码。

在 Git 操作中,远程仓库地址决定了本地如何与远程仓库通信。Gitee 支持两种协议访问仓库:

  1. HTTPS 协议

    • 格式示例:https://gitee.com/用户名/仓库名.git

    • 每次操作都需要通过账号密码或 Token 验证。

    • 数据传输需要进行 TLS 握手和加密,速度相对较慢,尤其是在国内网络环境下。

  2. SSH 协议

    • 格式示例:git@gitee.com:用户名/仓库名.git

    • 使用 SSH 公钥进行认证,无需每次输入密码。

    • 传输稳定、速度快,并可同时支持多仓库操作。

1.2 公钥与仓库的关系

SSH 公钥是本地计算机身份的凭证,与远程 Gitee 账号绑定:

  • 私钥(id_rsa :保存在本地 .ssh 文件夹中,不可泄露。

  • 公钥(id_rsa.pub:添加到 Gitee 账号,授权本地私钥访问你的仓库。

注意:一把公钥可以访问同一账号下的所有仓库,不必为每个项目单独生成公钥。多把公钥用于多账号或多设备场景。

1.3 当前问题表现

在使用 VS Code 或命令行执行 Git 操作时,开发者可能遇到以下问题:

  • git pullgit push 非常慢,甚至卡顿数分钟。

  • 频繁要求输入 Gitee 账号和密码。

  • 尝试使用 SSH 时,提示 Permission denied (publickey)

这些问题通常与使用 HTTPS 协议 或 SSH 公钥未正确配置有关。


二、检测与准备工作

2.1 检查当前远程仓库协议

在项目根目录打开终端,执行:

git remote -v

输出示例:

origin https://gitee.com/njust_365/info-manage.git (fetch)

origin https://gitee.com/njust_365/info-manage.git (push)

说明当前远程地址使用的是 HTTPS 协议,这是导致速度慢和频繁验证的根本原因。

2.2 检查本地 SSH 公钥

在 PowerShell 或命令行中执行:

ls ~/.ssh

确认存在:

  • 私钥:id_rsa

  • 公钥:id_rsa.pub

  • 配置文件:config

  • 已知主机文件:known_hosts

查看公钥内容:

cat ~/.ssh/id_rsa.pub

完整公钥从 开头 ssh-rsa结尾邮箱 都需要复制到 Gitee。

2.3 添加公钥到 Gitee

  1. 登录 Gitee → 个人设置 → SSH 公钥

  2. 点击 "添加公钥" → 填写标题(可随意)

  3. 粘贴完整公钥内容(ssh-rsa ... 邮箱

  4. 保存

添加后,这把公钥对应的私钥即可访问你账号下的所有仓库。

2.4 配置 .ssh/config 文件(Windows 示例)

编辑文件 C:\Users\用户名\.ssh\config,在末尾添加:

# Gitee 配置
Host gitee.com
HostName gitee.com
User git
IdentityFile C:/Users/lee/.ssh/id_rsa

说明:

  1. Host gitee.com:匹配远程仓库地址。

  2. User git:固定值。

  3. IdentityFile:本地私钥完整路径。

  4. 使用 / 或双反斜杠 \\,避免 Windows 路径识别问题。

当然,可以使用以下命令打开相应路径的文件

C:\Users\lee\.ssh\config


三、切换地址与验证

3.1 修改项目远程地址为 SSH

在项目根目录执行:

git remote set-url origin 你的SSH路径

路径在这里复制:

验证修改是否成功:

git remote -v

输出应为:

origin git@gitee.com:njust_365/info-manage.git (fetch)

origin git@gitee.com:njust_365/info-manage.git (push)

3.2 测试 SSH 连接

执行:

ssh -T git@gitee.com

第一次连接可能提示是否信任:

The authenticity of host 'gitee.com (IP地址)' can't be established.
Are you sure you want to continue connecting (yes/no/[fingerprint])?

输入 yes 即可,SSH 会将 Gitee 主机加入 known_hosts 文件。

  • 成功输出:

Hi njust_365! You've successfully authenticated, but GITEE.COM does not provide shell access.

表示 SSH 配置正确,本地可以无密码访问 Gitee。

3.3 测试 Git 操作

重新执行测试:

git add . 添加本地

git commit -m "备注" 提交备注

git pull 拉取

git status 检查

git push 推送

  1. 使用 SSH 协议后,速度明显提升(几秒完成)

  2. 不再需要输入账号和密码

  3. 支持多仓库、多项目操作,保持稳定


四、注意事项与最佳实践

  1. **公钥管理:**一把公钥可访问同一账号下所有仓库。多账号或多设备建议生成不同公钥,并在 .ssh/config 中区分 Host。

  2. **路径问题:**Windows 下 SSH 配置推荐使用完整路径,如 C:/Users/lee/.ssh/id_rsa。另外,避免使用 ~\ 导致找不到私钥。

  3. **权限问题:**私钥文件必须可读,公钥必须完整复制到 Gitee

  4. **首次 SSH 连接:**出现 can't be established 提示,输入 yes 信任即可,之后不会再提示

  5. 调试:ssh -vT git@gitee.com 可显示详细日志,便于排查 Permission denied 问题


五、本文总结

  1. HTTPS 与 SSH 区别

    • HTTPS 需要账号验证,速度慢

    • SSH 使用公钥认证,无需密码,速度快且稳定

  2. SSH 公钥管理

    • 私钥保存在本地 .ssh/id_rsa

    • 公钥添加到 Gitee 账号

    • 多项目可共用同一把公钥

  3. 配置流程

    • 检查远程仓库协议

    • 确认本地公钥存在

    • 添加公钥到 Gitee

    • 配置 .ssh/config 指定私钥

    • 修改项目远程地址为 SSH

    • 测试 SSH 连接和 Git 操作

  4. 注意事项

    • 路径问题、权限问题、首次连接提示

    • 多账号场景需额外公钥管理

通过以上步骤,可以保证 VS Code 或命令行在 Gitee 上的 Git 操作 快速、稳定、安全,解决 HTTPS 协议导致的慢速问题,同时避免频繁输入账号密码,提高开发效率。

如果上述解决方案,仍然没有效果,需要考虑 网络带宽问题。

相关推荐
FreeBuf_3 小时前
攻击者利用Discord Webhook通过npm、PyPI和Ruby软件包构建隐蔽C2通道
前端·npm·ruby
科技百宝箱3 小时前
02-如何使用Chrome工具排查内存泄露问题
前端·chrome
鹏多多4 小时前
React无限滚动插件react-infinite-scroll-component的配置+优化+避坑指南
前端·javascript·react.js
不会算法的小灰4 小时前
HTML盒子模型详解
前端·html
lifejump4 小时前
文章管理系统CMS的XSS注入渗透测试(白盒)
前端·web安全·xss·安全性测试
华仔啊4 小时前
Vue3 登录页还能这么丝滑?这个 hover 效果太惊艳了
前端·css·vue.js
IT_陈寒4 小时前
JavaScript引擎优化:5个90%开发者都不知道的V8隐藏性能技巧
前端·人工智能·后端
云和数据.ChenGuang4 小时前
Component template requires a root element, rather than just错误
前端·javascript·vue.js
mCell5 小时前
为博客添加 RSS 订阅
前端·vitepress·rss