我正在使用git来管理一个小项目。我一直通过SSH执行所有事务(克隆、推送、拉取等),但最近运行了git-update-server-info,因为我想尝试在http上运行git-clone。它工作得很好。凉爽的。现在我意识到,任何人都可以通过http克隆我的存储库,而不需要任何凭证。我隐约知道要通过gitosis设置http身份验证,但这真的不是我想要的。我更喜欢完全禁用http克隆。
有没有办法让git只允许通过ssh进行事务处理?或者,我可以撤消我在运行git-update-server-info以启用通过http克隆时所做的操作吗?
发布于 2009-08-28 18:29:10
对于通过HTTP传输可用的git存储库,它需要由(任何) web服务器“导出”。如果您的存储库(更准确地说是它的.git目录)在web浏览器中从外部可见,那么可以通过HTTP协议匿名克隆或获取它。git update-server-info用于为克隆(或获取)生成额外的辅助助手信息(.git/objects/info/packs和.git/info/refs),以了解可用的信息。
所以你需要做的就是删除这两个文件(**.git/objects/info/packs** 和apache),或者只是让你的存储库不能通过web访问,也许是通过 permissions的方式,这样web服务器运行的用户(通常是‘’或‘’,或者'apache')就不能访问web存储库。或者配置web服务器**,这样它就不会导出(使其可见)您的存储库。
HTTP协议是(目前)所谓的“哑巴”协议,意思是它按原样提供文件,访问控制由哑巴服务器完成,在这种情况下是由你使用的web服务器(或文件系统)完成的。
我猜您的存储库不是由web服务器导出的,所以您不必担心:您的存储库不能通过HTTP访问。
请注意,Git存储库通常具有匿名的未经验证的只读访问权限,只有写入存储库时才需要身份验证,即推送(至少对于开源项目)
发布于 2009-08-28 18:22:31
删除.git/objects/info/packs和.git/info/refs
https://stackoverflow.com/questions/1348568
复制相似问题