Git 10 ,使用 SSH 提升 Git 操作速度的实践指南( Git 拉取推送响应慢 )
目录
前言
一、背景与问题分析
1.1 Gitee 与项目仓库
1.2 公钥与仓库的关系
1.3 当前问题表现
二、检测与准备工作
2.1 检查当前远程仓库协议
2.2 检查本地 SSH 公钥
2.3 添加公钥到 Gitee
2.4 配置 .ssh/config 文件(Windows 示例)
三、切换地址与验证
3.1 修改项目远程地址为 SSH
3.2 测试 SSH 连接
3.3 测试 Git 操作
四、注意事项与最佳实践
五、本文总结
前言
在日常开发中,我们经常需要从远程代码仓库拉取或推送代码。在国内,Gitee 是常用的代码托管平台之一。很多开发者在使用 VS Code 或命令行执行 git pull
、git push
时,会遇到速度慢或者需要频繁输入账号密码的问题。本文将详细讲解如何通过配置 SSH 公钥,使本地项目使用 SSH 协议访问 Gitee 仓库,从而提高 Git 操作效率,并介绍相关注意事项和配置方法。
一、背景与问题分析
1.1 Gitee 与项目仓库
Gitee 是国内领先的 Git 代码托管平台,类似 GitHub。每个开发者的账号下可以有多个仓库(Repository),每个仓库用于存放一个或多个项目的代码。
在 Git 操作中,远程仓库地址决定了本地如何与远程仓库通信。Gitee 支持两种协议访问仓库:
-
HTTPS 协议
-
格式示例:
https://gitee.com/用户名/仓库名.git
-
每次操作都需要通过账号密码或 Token 验证。
-
数据传输需要进行 TLS 握手和加密,速度相对较慢,尤其是在国内网络环境下。
-
-
SSH 协议
-
格式示例:
git@gitee.com:用户名/仓库名.git
-
使用 SSH 公钥进行认证,无需每次输入密码。
-
传输稳定、速度快,并可同时支持多仓库操作。
-
1.2 公钥与仓库的关系
SSH 公钥是本地计算机身份的凭证,与远程 Gitee 账号绑定:
-
私钥(
id_rsa
):保存在本地.ssh
文件夹中,不可泄露。 -
公钥(
id_rsa.pub
):添加到 Gitee 账号,授权本地私钥访问你的仓库。
注意:一把公钥可以访问同一账号下的所有仓库,不必为每个项目单独生成公钥。多把公钥用于多账号或多设备场景。
1.3 当前问题表现
在使用 VS Code 或命令行执行 Git 操作时,开发者可能遇到以下问题:
-
git pull
或git 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
-
登录 Gitee → 个人设置 → SSH 公钥
-
点击 “添加公钥” → 填写标题(可随意)
-
粘贴完整公钥内容(
ssh-rsa … 邮箱
) -
保存
添加后,这把公钥对应的私钥即可访问你账号下的所有仓库。
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
说明:
-
Host gitee.com
:匹配远程仓库地址。 -
User git
:固定值。 -
IdentityFile
:本地私钥完整路径。 -
使用
/
或双反斜杠\\
,避免 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 推送
-
使用 SSH 协议后,速度明显提升(几秒完成)
-
不再需要输入账号和密码
-
支持多仓库、多项目操作,保持稳定
四、注意事项与最佳实践
-
公钥管理:一把公钥可访问同一账号下所有仓库。多账号或多设备建议生成不同公钥,并在
.ssh/config
中区分Host。
-
路径问题:Windows 下 SSH 配置推荐使用完整路径,如
C:/Users/lee/.ssh/id_rsa。另外,
避免使用~
或\
导致找不到私钥。 -
权限问题:私钥文件必须可读,公钥必须完整复制到 Gitee
-
首次 SSH 连接:出现
can't be established
提示,输入yes
信任即可,之后不会再提示 -
调试:
ssh -vT git@gitee.com
可显示详细日志,便于排查Permission denied
问题
五、本文总结
-
HTTPS 与 SSH 区别
-
HTTPS 需要账号验证,速度慢
-
SSH 使用公钥认证,无需密码,速度快且稳定
-
-
SSH 公钥管理
-
私钥保存在本地
.ssh/id_rsa
-
公钥添加到 Gitee 账号
-
多项目可共用同一把公钥
-
-
配置流程
-
检查远程仓库协议
-
确认本地公钥存在
-
添加公钥到 Gitee
-
配置
.ssh/config
指定私钥 -
修改项目远程地址为 SSH
-
测试 SSH 连接和 Git 操作
-
-
注意事项
-
路径问题、权限问题、首次连接提示
-
多账号场景需额外公钥管理
-
通过以上步骤,可以保证 VS Code 或命令行在 Gitee 上的 Git 操作 快速、稳定、安全,解决 HTTPS 协议导致的慢速问题,同时避免频繁输入账号密码,提高开发效率。