我想要设置一个服务器,通过ssh和https通过客户端证书托管git存储库。我不想要任何时髦的GUI或类似的东西(例如,Bitbucket、GitLab等),我只想要一个托管存储库的最低配置。
但是,我确实希望用户在存储库之间进行分离。
我已经有了一个https案例的解决方案,而ssh则有一个恼人的解决方案。
我搜索了一些多用户ssh git服务器配置,但我发现指南的基本假设是,所有用户都可以访问所有存储库。也就是说,创建一个"git“用户,将所有用户的公钥添加到~git/..ssh/authorized_key,为"git”用户使用git-shell,并在"git“用户下托管所有的repos。
我想要完成的是托管一堆存储库,在默认情况下,用户只能通过让管理员向项目中添加ssh键来访问这些存储库,直到获得明确的权限。
我以前通过在系统中给每个用户分配一个不同的帐户来完成这个任务,并使用常规的组权限来进行共享--但是由于一些原因,这是很麻烦的。
让这个特性顺利工作的一般理论是什么?
我假设基本思想是拥有一个"git“用户,并让每个用户在~git/authorized_keys中,但是一旦ssh对其进行了身份验证,它就会将有关身份验证的信息传递给包含所有回购权限的外部用户数据库,然后这些权限将用于执行文件系统访问检查。
发布于 2020-02-18 18:51:58
几年前我为SVN做过这件事。我设立了一个Unix帐户。也就是说,git@向~git/authorized_keys添加了用户键,并在用户登录时增加了运行服务器(即git-shell)的额外内容。
到目前为止,正是你在第4段中所说的。
您所缺少的一点是,~git/authorized_keys中的每个条目都向git-shell传递一个不同的参数,告诉它用户名。然后,git-shell应该采取相应的行动来分离用户。也就是说,它对用户有自己的想法。
发布于 2020-02-18 18:38:03
看看https://github.com/sitaramc/gitolite,看看它是否对你有用。
https://unix.stackexchange.com/questions/568334
复制相似问题