我在服务器上设置git和gitosis来管理我的回购。它适用于我设置的初始shell帐户,即我可以运行:
git clone git@MYSERVER:gitosis-admin.git
但是当我尝试使用我创建的单独帐户时(通过gitosis.conf),它一直要求输入密码:
git clone johndoe@MYSERVER:gitosis-admin.git
我设置了SSH密钥并将副本推送到服务器上的keydir。这个问题似乎解决了同样的问题,但给出的解决方案是为了tortoisegit。
如何告诉git使用ssh密钥而不是要求输入密码?
答案 0 :(得分:5)
您不使用您的用户名,您总是说:
git clone git@MYSERVER:<repository>
Gitosis将您的配置文件中的名称与服务器上的密钥名称相关联。也就是说,你有像
这样的行[group users]
members = johndoe janeroe
writable = repo1 repo2
在gitosis.conf中,文件johndoe.pub,janedoe.pub在gitosis-admin / keydir中; gitosis将为用户使用适当的密钥,但您始终使用“git”作为URL中的用户。那是因为它总是使用“git”帐户。
答案 1 :(得分:2)
好吧,我刚读过关于gitosis的内容,而AFAICT在使用它时绝对不能从johndoe@MYSERVER
克隆。始终从git@
克隆,并确保正确设置了ssh密钥,以便服务器可以使用它们来区分(例如)johndoe和janedoe。
您在客户端执行的操作是将johndoe的SSH密钥添加到您的钥匙串中,删除服务器将接受的任何其他密钥,并将您的git用户和电子邮件设置设置为以johndoe身份识别。服务器将比较两者,看它们是否匹配,然后让你提交。如果您将SSH配置为使用其他人的密钥,然后尝试使用git作为johndoe提交,您可能能够连接到服务器,但它不会让您继续提交。
OTOH,因为gitosis不会创建实际的用户帐户,所以你不能将ssh作为johndoe进入机器,这也意味着你不能在git中使用johndoe @ ...地址作为存储库。如果你需要这样做,你将不得不以另一种方式设置你的git服务器。