我有一个configuration了版本控制系统的项目的Windows服务器。 假设是GIT或者SVN或者….假设全球有10个人在这个项目上工作。
首先想到的是用SSH保证这些程序员和服务器之间的连接。 但我的问题是,一个黑客可以摧毁服务器,如果他获得SSH用户名和密码的用户帐户(告诉我,如果我错了)。
所以我需要一个安全的方式让程序员把他们的修改版本推送到服务器上。 任何想法都可爱
首先,可以保护SSH帐户(例如,仅使用公钥唯一身份validation)。
在Mercurial安装正确的情况下,您只能推送新的修订版本,而不会破坏任何内容。 但是,如果攻击者获得对存储库的写入访问权限,则无论如何您都会遇到其他问题。 你也可以使用受保护的HTTP访问,如果你不想给他们一个新的帐户。
目前我使用一个名为“darcs”的分布式版本控制系统。 我已经使用该工具和Linux服务器尝试了下面概述的两种方法。 我也使用了Subversion和CVS的方法1。
在不同的服务器和/或版本控制系统上,您的里程可能会有所不同。 但是基本的方法可能在任何你select的configuration上都是可行的。
1-使用单个用户帐户而不泄露任何人的密码,您使用公钥通过SSH对该帐户的连接进行身份validation。 您将该单个用户帐户的权限限制为只能访问存储库。 您的存储库的贡献者必须生成一个私钥/公钥对,并将公钥发送给您,以便您可以将其添加到授权密钥中。 如果你删除它,他失去了访问。
2-要求您的补丁贡献者签名并发送补丁程序。 您维护一个持有授权贡献者密钥的公共密钥环。 在应用之前,所有补丁签名都会根据该密钥环进行validation。 所以只有授权贡献者签名的补丁才会被应用。