在Windows上的Git – 如何使用远程回购在Linux上进行身份validation

由于在HTTP上的Windows上的Git仓库存在一些严重的问题,我们正在把我们的Git“服务器”移到Linux上。

假设我已经安装了Windows的msysgit和腻子,当我克隆,拉和推,我将如何validationSSH连接?

在SSH的情况下:

  • 在服务器上,您需要允许使用公钥和私钥进行身份验证,您可以通过Google进行操作,例如http://shapeshed.com/setting_up_git_for_multiple_developers/
  • 在客户端,只需把你的私钥放到你的windows家里的.ssh文件夹中,例如C:\Users\Name\.ssh ,就像在unix上一样。

你仍然可以使用HTTP,它将(1)总是要求用户名和密码或(2)你也可以把用户名和密码到URL: https://username:password@git.mydomain.com/...

本页面涵盖了使用PuTTy进行Git公钥认证的一切内容。 简而言之:

  • 用puttygen生成密钥对
  • 把公钥放在服务器上
  • 在本地计算机中,将GIT_SSH环境变量设置为指向plink.exe
  • 运行腻子选美并在那里加载你的私钥

我建议通过本教程 。

需要注意的是它讨论的是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)。