我正在使用git来管理一个小项目.我一直在通过SSH执行所有事务(克隆,推送,拉取等),但最近运行了git-update-server-info,因为我想尝试通过http运行git-clone.它运作得很好.凉.现在我意识到,任何人都可以通过http克隆我的存储库而无需任何凭据.我隐约知道通过gitosis建立http身份验证,但这真的不是我想要的.我宁愿完全禁用http克隆.
有没有办法告诉git只允许通过ssh进行交易?或者我可以撤消我在运行git-update-server-info时所做的事情,以便首先通过http进行克隆?
对于通过HTTP传输可用的git存储库,它需要由(任何)Web服务器"导出".如果您的存储库(更准确地说是其.git
目录)在Web浏览器中从外部可见,则可以通过HTTP协议匿名克隆或获取它. git update-server-info
用于生成克隆(或获取)的额外辅助帮助信息(.git/objects/info/packs
和.git/info/refs
),以了解可用的内容.
所以你需要做的是要么删除这两个文件(.git/objects/info/packs
和.git/info/refs
),要么只是通过网络提供你的存储库,也许通过改变权限,以便用户运行web服务器(通常是'nobody'或者'www'或'apache')无权访问.git
存储库.或者配置Web服务器,使其不会导出(显示)您的存储库.
HTTP协议(当前)称为"哑"协议,意味着它按原样提供文件,访问控制由[哑]服务器完成,在本例中由您使用的Web服务器(或文件系统)完成.
我想您的存储库不会被Web服务器导出,因此您无需担心:您的存储库无法通过HTTP获得.
请注意,Git存储库通常会引用具有匿名未经身份验证的只读访问权限,并且只需要对存储库进行身份验证即推送(至少对于开源项目)