2026.7.28 星期二
简单说:SSH 和 HTTP 是 Git 连接远程仓库(比如 GitHub/Gitee/GitLab)的两种「通信方式」 ,作用都是让你本地电脑和远程服务器传输代码,只是验证身份、使用方式不一样。、
-
HTTPS :不用配置,直接用账号密码 / 令牌登录,每次都要验证
-
SSH :配一次密钥,永久免密,更安全、更方便
| 维度 | HTTP/HTTPS | SSH |
|---|---|---|
| 端口 | 443 (HTTPS) / 80 (HTTP) | 22 |
| 认证方式 | 用户名+密码 或 Token | 密钥对(公钥+私钥) |
| URL 格式 | https://github.com/user/repo.git | git@github.com:user/repo.git |
| 默认加密 | HTTPS 是,HTTP 否 | 是(端到端加密) |
| 配置难度 | 简单 | 较复杂 |
一.HTTP连接
全称:Hyper Text Transfer Protocol Secure(安全超文本传输协议)
原理:用账号密码/令牌验证身份,每次操作都需要登录。
使用流程
1.直接复制仓库地址
2.每次 git push 时,会弹出输入用户名 + 密码 / 令牌

优点:不用配置任何东西,开箱即用;任何电脑都能直接用
缺点:频繁输密码,很麻烦;在主流平台(GitHub/Gitee)不支持纯密码,必须用令牌,更繁琐
HTTPS配置
bash
# 克隆仓库
git clone https://github.com/用户名/仓库名.git
# 首次推送时会要求输入用户名和 Token
# 用户名:你的 GitHub 用户名
# 密码:Personal Access Token(在 GitHub Settings → Developer settings 生成)
# 缓存凭证(避免每次输入)
git config --global credential.helper cache # 临时缓存
git config --global credential.helper store # 永久存储(不够安全)
二.SSH连接
全称:Secure Shell(安全外壳协议)
原理:用密钥对(公钥 + 私钥)验证身份,不用输密码。
使用流程:
1.本地生成一对密钥(私钥放自己电脑,公钥粘贴到远程仓库)
2.配置好后,以后克隆、拉取、推送代码全程不用输密码

优点:✅ 免密,超级方便✅ 安全,不会泄露密码✅ 速度快,稳定
缺点:❌ 第一次需要配置密钥(新手稍微麻烦一点)
SSH配置
bash
# 1. 生成密钥对
ssh-keygen -t ed25519 -C "your_email@example.com"
# 2. 启动 SSH Agent 并添加私钥
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519
# 3. 复制公钥
cat ~/.ssh/id_ed25519.pub
# 将输出的内容粘贴到 GitHub → Settings → SSH and GPG keys
# 4. 测试连接
ssh -T git@github.com
# 5. 使用 SSH 地址克隆
git clone git@github.com:用户名/仓库名.git
区别对比
| 特性 | HTTPS | SSH |
|---|---|---|
| 🔒 安全性 | 依赖 TLS + Token | 密钥对认证,私钥不出本地 |
| ⚡ 速度(首次) | 较慢(握手+认证) | 较慢(密钥交换) |
| ⚡ 速度(后续) | 凭证缓存后较快 | 更快(无额外认证步骤) |
| 🔧 配置难度 | ⭐ 简单 | ⭐⭐⭐ 需要理解密钥概念 |
| 🌐 网络兼容 | ✅ 几乎任何网络都通 | ❌ 很多企业防火墙封 22 端口 |
| 👥 多账户管理 | 切换麻烦 | 通过 ~/.ssh/config 轻松管理 |
| 🔄 代理支持 | 自动走系统代理 | 需手动配置 ProxyCommand |
| 📱 临时使用 | ✅ 方便,不用配置 | ❌ 必须先配密钥 |
| 🔑 凭证管理 | 系统凭据管理器 | SSH Agent |
| 🚫 GitHub 旧密码 | ❌ 2021 已废弃 | N/A(本来就不用密码) |