SSH 基于密钥对免密鉴权,HTTPS 基于令牌灵活鉴权,长期开发选 SSH,受限环境选 HTTPS。
核心差异
| 维度 | SSH | HTTPS |
|---|---|---|
| 默认端口 | 22 | 443 |
| 鉴权方式 | 密钥对(非对称加密) | 用户名 + PAT |
| 配置成本 | 需生成密钥、上传公钥 | 无需额外配置 |
| 网络兼容性 | 22 端口可能被封 | 443 通用端口,几乎无限制 |
| 安全性 | 私钥本地存储,安全性高 | PAT 是字符串,泄露风险较高 |
| 权限粒度 | 密钥绑定账户全部权限 | PAT 可设置单仓库、只读等细粒度权限 |
SSH 鉴权
流程:
- 本地生成密钥对:
ssh-keygen - 上传公钥到 Git 平台
- 通信时私钥签名,公钥验证
优势:配置后免重复输入凭证 劣势:密钥绑定账户,无法限制单仓库权限
HTTPS 鉴权
主流平台已禁用密码,改用 PAT(Personal Access Token):
- 平台生成 PAT,指定权限和过期时间
- 首次操作输入「用户名 + PAT」
- Git 凭据助手缓存凭证
安全提醒:不要将 PAT 拼在 URL 中(如 https://user:token@gitlab.com/xxx),否则会记录在日志中导致泄露。
场景选择
优先 SSH
- 个人长期开发设备
- 对安全性要求高
- 无端口限制
优先 HTTPS
- 临时/公共设备
- 企业内网封禁 22 端口
- 需细粒度权限控制(单仓库只读)
安全规范
SSH 密钥:
- 私钥设置密码
- 定期更换密钥
HTTPS PAT:
- 不将 PAT 拼在 URL 中
- 设置最小必要权限和最短过期时间
- 泄露后立即吊销
通用:
- 不在公共设备保存私钥或 PAT
- 定期清理已授权凭证
张芷铭的个人博客
Comments