为什么部分GitLab项目SSH克隆地址没有ssh://协议头?
两种Git SSH克隆地址的区别
这两种都是Git支持的合法SSH协议克隆地址,核心差异是格式规则和适用场景:
git@xxx类属于SSH scp 简写格式,是SSH地址的简化写法,默认使用SSH标准22端口,固定格式为<服务用户名>@<主机域名>:<仓库存储路径>,不需要额外写协议头和端口。绝大多数公开Git服务(比如GitHub、Gitee、官方公共GitLab实例)默认展示这种格式,因为这类服务的SSH端口都用标准22端口,简写更简洁易读。- 带
ssh://前缀的属于SSH URI 标准格式,完全符合RFC定义的通用URI规范,格式为ssh://<服务用户名>@<主机域名>:<端口号>/<仓库存储路径>,支持显式指定非标准SSH端口。你自建的GitLab展示这种格式,就是因为你配置GitLab的时候把SSH服务端口改成了非标准的222端口,无法复用简写格式默认的22端口,所以必须用完整URI格式明确标注端口信息。
额外说明:两种格式功能完全一致,只要参数正确都可以正常完成克隆操作。你也可以手动把自定义端口的完整URI格式改成scp简写格式,规则是去掉
ssh://前缀,把端口前的冒号保留,路径前的斜杠不需要调整,比如你给出的ssh://git@gitlab.demo.com:222/xxx改成简写格式就是git@gitlab.demo.com:222/xxx,使用效果完全相同。
内容的提问来源于stack exchange,提问作者user7693832
相关产品推荐
相关产品推荐

