首页/开发/Git 与协作速查/Git 传输协议与接入方式
Git 基础与命令88 条

Git 传输协议与接入方式

常见协议:本地路径、SSH(git@)、HTTPS 与 git://;认证方式、端口与适用网络环境各不相同。

Git 与协作速查开发更新于 2026-10-13

Git 有哪些传输协议

Git 支持本地路径、file://、SSH(git@host:path)、HTTPS 以及 git:// 等多种传输方式,区别在于认证方式、端口与能否穿过企业防火墙。日常协作主要在 SSH 与 HTTPS 之间选择;git:// 既不加密也不认证,公网平台已普遍不推荐或默认关闭。

基本信息

SSH默认 22 端口,可用 ssh://user@host:2222/path 换端口,走密钥认证
HTTPS443 端口,凭据交给 credential helper 或平台令牌,穿透性最好
git://9418 端口,只读且无认证,多数平台不建议用于公网
本地路径/srv/git/app.git 或 file://,走文件系统权限,用于同机或共享盘

典型使用场景

  • 公司网络只放行 443 时用 HTTPS 克隆与推送
  • CI 免交互自动化用部署密钥或访问令牌
  • 内网自建 GitLab 日常开发多用 SSH,配合 ssh-agent
  • 内网镜像同步走本地路径或 SSH,避免占用公网带宽
  • 开源项目匿名只读克隆用 HTTPS,无需密钥托管

常用示例

常用示例
git clone https://github.com/org/repo.git          # HTTPS:443 端口,兼容性最好
git clone git@github.com:org/repo.git              # SSH:使用 ~/.ssh 下的密钥
git clone ssh://git@example.com:2222/org/repo.git  # SSH 非默认端口
git clone --depth=1 https://github.com/org/repo.git # 浅克隆,只取最新提交减少流量
git remote -v                                      # 查看当前远端使用哪种协议
git remote set-url origin git@example.com:org/repo.git  # 由 HTTPS 切换到 SSH

协议对照

协议默认端口认证方式适用网络
SSH22,可自定义公钥私钥可出 22 或自建端口
HTTPS443账号密码或令牌只放行 443 的受限网络
git://9418无认证仅内网只读镜像
本地与 file无文件系统权限同机或挂载共享目录
两条通道的代理配置互不相通:HTTPS 看 http.proxy 与 https.proxy 及环境变量,SSH 要看 ~/.ssh/config 中的 ProxyCommand 或 ProxyJump,排查连通性时要分别验证。
git:// 不加密也不验证服务端身份,内容可能被中间人篡改,公网只读克隆也应改用 https。
切换协议不必重新克隆:git remote set-url origin <新地址> 即可,但已缓存的凭据不会自动迁移。切到 HTTPS 后首次推送要重新认证,切到 SSH 前要确认本机公钥已经上传到平台账号。
同一个仓库允许并存多个远端:只读上游用 HTTPS、内部镜像用 SSH 推送是常见组合。用 git remote -v 分别核对地址与协议,推送时显式写出远端名,避免推到错误的位置。

易错点

  • 把令牌写进远端地址(https://user:token@host/…)会随 .git/config 一起泄露,应改用 credential helper 保存
  • 只测通一条通道就判断网络正常:HTTPS 能通不代表 SSH 能通,克隆失败要分别验证 443 与 22 端口
  • 自建平台改了 SSH 端口却忘记更新远端地址,表现为连接超时或 connection refused
  • 浅克隆缺少标签与完整历史,git describe 与 git bisect 结果不完整,排查版本问题前先 git fetch --unshallow 补齐

数据来源与参考

  • Pro Git 2nd Edition · 4.1 协议
  • GitHub 官方文档:关于远程仓库与协议
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌