由于在HTTP上的Windows上的Git仓库存在一些严重的问题,我们正在把我们的Git“服务器”移到Linux上。
假设我已经安装了Windows的msysgit和腻子,当我克隆,拉和推,我将如何validationSSH连接?
在SSH的情况下:
.ssh
文件夹中,例如C:\Users\Name\.ssh
,就像在unix上一样。 你仍然可以使用HTTP,它将(1)总是要求用户名和密码或(2)你也可以把用户名和密码到URL: https://username:password@git.mydomain.com/...
本页面涵盖了使用PuTTy进行Git公钥认证的一切内容。 简而言之:
我建议通过本教程 。
需要注意的是它讨论的是github,所以告诉服务器关于你的SSH密钥的故事是不同的。
还有什么不同是你打算如何管理你的开发人员。 这个“问题”是SSH与真正的远程(服务器端,我的意思是)用户,它们必须有普通的Unix系统帐户。
如果你只有少数开发人员,这是可以的。 然后你只需要把它们全部添加到一个特殊的组(比如说devel
),并确保你使用git init --bare --shared=group
来初始化你的服务器端的裸回购,并且使它们是可写组的并且属于那个group devel
(这也可以通过在具有“组粘贴位”并且属于该组devel
的目录下创建所有的回购)来帮助。
要将开发人员密钥的公共部分分配给服务器,必须将该密钥部分(从开发人员的id_rsa.pub
文件,即ASCII)字面复制并粘贴到文件/home/developer/.ssh/authorized_keys
文件。 如果该文件不存在,请创建它。 如果密钥是在安装了OpenSSH客户端的机器上生成的,则可以使用ssh-copy-id
程序一次性传输密钥。
这可能会变得混乱,所以你可能会考虑实施一个解决方案,使Git用户(如github)虚拟化。 有很多选择:
gitolite
– 据说是最流行的解决方案。 没有装饰,使用专门的管理Git仓库管理开发人员的公共密钥和一个配置文件,描述他们的回购和权限管理。 普通的Perl,可以安装在最明智的发行版上。 gitlab
– 一个全功能于一身的解决方案。 用Ruby写的,所以你可能会面临维护噩梦。 gitblit
– 另一个全合一的解决方案,用纯Java编写(请注意,它不会调用vanilla Git并使用纯Java Git图层 – JGit)。