我在哪里可以在Debian上安装gitosis? 它是否在我的开发和现场服务器上?

最近我一直在阅读很多有关gitosis的文档,但是我承认对于ssh密钥是新的,而且我似乎对gitosis实际上如何与git一起工作来提供访问控制只有基本的了解。

但实际上,我的研究工作已经太长了,我觉得在Gitosis中我不能理解这一点。 那将是:

1)在哪里我可以在我的Debian服务器上安装Gitosis? 在/ home / git /? 或/ usr / bin /? 在仓库本身下的/ var / www? 这是一个似乎并没有在我已阅读的安装主题的各种博客条目中涉及的一件事。 然而,这似乎是一个公平的问题。

2)有些博客说使用公钥,有的则暗指私钥。 有些人似乎说,不pipe他们希望你使用什么密钥,都要给他一个密码。 其他人说,把密码字段留空将使一切不安全。 所以这让我完全困惑。

3)我想要做的就是添加我自己和另外两个开发人员访问开发服务器,以便他们可以将代码从一个目录(假设他们自己的沙箱)推送到同一服务器上的www / html dev目录(用于发布到内部testing)。 然后,我想从那里将​​代码推送到另一台服务器,一旦它被testing。 难道设置起来真的很难吗? 我应该添加git和gitosis到活服务器?

我正在使用下面列出的这个页面作为参考和大部分了解。 只是不是关于我在上面问的部分。 谢谢。

http://scie.nti.st/2007/11/14/hosting-git-repositories-the-easy-and-secure-way

1:就安装gitosis而言,你可以把它的“源码”放到你喜欢的任何目录中。 setup.py脚本具有用于安装所有内容的默认位置。 Debian的gitosis包将安装这里列出的文件。 至于你的代码,gitosispipe理“git”用户的主目录中的存储库。 从那里你将需要拉实际网站的工作副本。 这里有一个关于如何使用git来pipe理网站的网页,这里有一些自动化的想法,虽然你需要更多的手肘润滑油来处理分期和生产问题。 另请参阅#3。

2:SSH使用公钥/私钥对。 用户始终保密私钥,然后将公钥发送给用户想要login的任何服务器(因此,如果有人“窃取”了公钥,他们能做的最好的就是让用户login到他们的服务器)。 在你所链接的教程中给出的gitosis-init命令将获取公钥的一半,然后将其添加到你创build的那个“git”用户的SSH的authorized_keys列表中,并使用特殊的设置强制任何人使用私钥进行login只能使用gitosis。

3:您必须根据您的访问控制权来决定。 如果你的团队在生产服务器上有shell访问权限,那么简单的做法就是git pull gitolite的所有更新从git pull到生产服务器上。 如果你没有shell访问权限,那么你需要设置一些服务来将网站推送到生产服务器,这可能是最容易使用rsync或scp或类似的东西。

SSH如何使Gitosis工作

ssh有几个关键部分让gitosis工作:

第一部分是公钥/私钥系统,允许用户使用密钥login,而不是使用账户密码。 这是让多人都使用相同的SSH用户名(“Git”)login。

下一部分是authorized_keys文件。 所有被允许login到这个“git”帐号的公钥都存储在这个文件中。 连接时,您和服务器根据密钥交换信息(实际上并不传输密钥本身),以certificate您的私钥与其中一个授权的公钥匹配。 为了让你的客户做到这一点,如果你已经在你的密钥上设置了密码(实际上是对密钥本身进行了encryption),你需要给你的客户端密码。

gitosis的“魔力”是authorized_keys文件可以被configuration为强制特定的键运行特定的命令。 gitosis-init做了什么(除了设置gitosis自己的“特殊”configuration库)之外,就是获取它所提供的公钥,并将其添加到authorized_keys文件中,命令被强制为一个标识该密钥的实际所有者的程序,将远程git程序连接到本地git存储库(该命令是gitosis-serve username )。 请注意, gitosis-init只能使用一次,之后所有更改都通过configuration库进行:您将添加您的其他开发人员的公钥(它们应该自行生成,私钥私有,只给予公钥)到该存储库中,并将configuration推送回服务器。 gitosis会在完成后自动添加authorized_keys行和用户信息。