git中http与ssh连接

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(本来就不用密码)
相关推荐
码匠许师傅12 小时前
【C++三方组件】cpp-httplib:一个头文件起 HTTP 服务
开发语言·c++·http
不会就选b12 小时前
Linux之应用层协议HTTP(二)
网络·网络协议·http
liangshanbo121520 小时前
面试题:HTTP/2有哪些升级
网络·网络协议·http
web打印社区20 小时前
远程打印:WebSocket 与 HTTP 轮询怎么选
前端·vue.js·websocket·网络协议·http·electron·pdf
不会就选b21 小时前
Linux之http会话
服务器·网络协议·http
louisgeek1 天前
Git submodule 子模块
git
imDwAaY1 天前
6篇文章讲清楚Git:Git 实用技巧:暂存现场、挑选提交与定位 Bug (5/6)
git·后端
imDwAaY1 天前
6篇文章讲清楚Git:Git 团队开发实践:从 Pull Request 到版本发布 (6/6)
git·后端
誰能久伴不乏1 天前
看懂 Git 团队协作全流程:分支、提交、PR、rebase 到底在干嘛
git
承渊政道2 天前
Linux系统学习【进程信号详细解析——认识、产生、保存以及捕捉信号】
linux·学习·ubuntu·ssh·vs code·进程信号