🔐 SSH over 443 配置详解
网络穿透
配置时间:2026-04-01
💡 为什么需要 SSH over 443?
某些网络环境(如企业防火墙、校园网、新疆等地区)会封锁 SSH 默认端口 22,导致 git push 失败。使用 443 端口(HTTPS 标准端口)可以绕过封锁。
⚙️ 配置步骤
1. 编辑 SSH 配置文件
文件路径:C:\Users\用户名\.ssh\config
如果 .ssh 文件夹或 config 文件不存在,请手动创建:
# 确保文件夹存在
mkdir C:\Users\用户名\.ssh
# 用记事本创建 config 文件
notepad C:\Users\用户名\.ssh\config
配置内容:
Host github.com
HostName ssh.github.com
Port 443
User git
IdentityFile C:\Users\用户名\.ssh\id_ed25519
TCPKeepAlive yes
ConnectTimeout 10
2. 修复私钥文件权限(Windows 专用)
Windows 下私钥文件权限过宽会导致 SSH 拒绝使用:
icacls "C:\Users\用户名\.ssh\id_ed25519" /inheritance:r /grant "用户名:(R,W)"
说明:
/inheritance:r- 禁用继承,确保仅当前用户可访问/grant "用户名:(R,W)"- 授予当前用户读写权限- 如果是 RSA 密钥,文件名可能是
id_rsa
3. 测试连接
ssh -o StrictHostKeyChecking=no -T -p 443 git@ssh.github.com
预期输出:
Hi shuo65! You've successfully authenticated, but GitHub does not provide shell access.
如果看到以上信息,说明 443 端口连接成功!
🔍 故障排查
测试 443 端口连通性
Test-NetConnection -ComputerName ssh.github.com -Port 443
预期: TcpTestSucceeded : True
如果 False: 当前网络 443 也被屏蔽,需使用手机热点或代理。
查看 SSH 调试日志
ssh -vvv -p 443 git@ssh.github.com
- 查看是否使用了
ssh.github.com:443 - 检查公钥是否正确加载
- 验证是否成功认证
⚡ Git 操作示例
标准推送(使用配置的 443 端口)
git push origin main
注意: 无需在命令中指定端口,SSH config 会自动处理。
临时使用 HTTPS(绕过 SSH 配置问题)
git remote set-url origin https://github.com/用户名/仓库名.git
git push origin main
提示: HTTPS 方式会要求输入账号密码(或 Personal Access Token)。
📊 适用场景对比
| 场景 | 推荐方式 | 优点 | 缺点 |
|---|---|---|---|
| 网络正常 | SSH 端口 22 | 最快、最稳定 | 某些环境被墙 |
| 企业/校园网 | SSH over 443 | 绕过防火墙 | 速度稍慢 |
| 新疆/严格屏蔽 | HTTPS + 代理 | 最可靠 | 需配置代理 |
⚠️ 注意事项
- 一次配置,永久生效: SSH config 配置后,所有 git 操作都会自动使用 443 端口,无需每次指定。
- 不要同时使用两种 remote: 要么 SSH(
git@github.com:...),要么 HTTPS(https://github.com/...),混用会导致混乱。 - 密钥文件路径:
IdentityFile路径必须与实际私钥文件一致,注意 Windows 路径分隔符。 - CTRL+C 中断: 测试连接时如果卡住,按 Ctrl+C 中断。
- 代理优先级: 如果同时配置了 SSH over 443 和系统代理,Git 会优先使用 SSH 配置,不受代理影响。
记录日期:2026-04-07 | 整理人:小龙女-CEO