我想设置一个 git 服务器。我找到了几个操作指南,非常详细。
有些描述了可通过 Ssh 访问的 git-server 的安装,而另一些则描述了可通过 HTTP 访问的安装。(其他人甚至建议使用 gitolite 之类的工具)。
选择 SSH 或 HTTP 有什么好处或坏处吗?似乎通过 HTTP,文件传输速度明显较慢,但我想知道是否还有其他需要注意的事项。
如果有的话,设置 git 服务器的最常见方法是什么?
答案1
当你问最常见的方法是什么时,我认为最好看看你的情况,并记住一个协议并不排斥另一个协议- 如果需要,稍后添加更多访问协议。
最多高效的更快、更快速的方法是使用原生 Git 守护程序。但是,提供的功能很少:没有加密,没有身份验证。非常适合用于存储库的公共只读镜像。如果您需要性能,还可以考虑安装最新版本,而不是操作系统附带的版本。
最多兼容的方式是 HTTP。效率不如原生 Git,但差别也不大。HTTP 最重要的优点是防火墙穿透和代理支持。对于大多数网关/防火墙来说,它看起来就像其他常规 HTTP 流量一样。
更多的安全的是 HTTPS,但不可避免地效率较低。需要相当多的配置。您还需要一个受信任的 TLS 证书。
类似的安全性,但更常见的方法是使用 SSH。它是默认如果命令行上未指定协议。由 SSH 提供支持,它提供强加密以及密码和密钥身份验证。虽然非常规,但也可以以这种方式允许匿名访问。
我的建议取决于您的存储库的使用情况:
私人存储库和小型用户组:SSH
公共存储库,任意数量的克隆,但一小群具有推送特权的用户:HTTP 和 Git(仅获取)+ SSH(+推送访问)
以上任何一种,但拥有大量推送特权用户:您可能不了解 Git 的哲学。
某些公共或企业网络可能会阻止 Git 和 SSH 通信。如果您确实需要从任何地方,考虑同时使用 HTTPS 和 SSH。
答案2
如果您的存储库是公开的,则可以使用 HTTPS 进行只读访问,因为它在客户端上易于使用。如果不是,则应仅使用 SSH。无论如何,您都应使用 SSH 进行写访问,因为它具有更好的身份验证管理。