由于基于 HTTP 的 Windows 上的 Git 存储库存在一些严重问题,我们正在将 Git“服务器”迁移到 Linux。
假设我已经安装了适用于 Windows 的 msysgit 和 Putty,当我克隆、拉取和推送时,我将如何验证 SSH 连接?
在 SSH 的情况下:
.ssh
Windows 主页的文件夹中,例如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
例如devel
目录下的存储库,该目录设置了“组粘性位”并属于该组devel
)。
要在这种设置中将开发人员密钥的公共部分分发到服务器,您必须将该密钥部分(来自开发人员的id_rsa.pub
文件,它是 ASCII)复制并粘贴到文件/home/developer/.ssh/authorized_keys
文件中。如果该文件不存在,请创建它。如果密钥是在安装了 OpenSSH 客户端的机器上生成的,您可以使用该ssh-copy-id
程序在一个步骤中传输密钥。
这可能会变得一团糟,因此您可能会考虑实施一个虚拟化 Git 用户的解决方案(就像 github 那样)。有很多可供选择: