Gitolite一个用户-多个密钥-不同的用户名
我已经按照指示安装了gitolite,一切都按计划进行 我有点不确定用户名部分是如何工作的,浏览文档对我没有帮助——也许我遗漏了一些简单的东西 如果我有两台客户端机器,供一个真实的人使用,但是在每台机器上,用户名都是,比如说dave和david。如何组织keydir和任何配置文件中的键,使它们都代表同一用户?我得到后缀的东西,dave@laptop, dave@desktop(我认为),只是不知道如何让不同的客户机用户名连接起来,因为在进行身份验证时似乎会考虑到这一点(可能是因为公钥包含user@host信息?) 如果需要的话,我可以提供更多的细节——我只是不想用无关的信息轰炸你们所有人Gitolite一个用户-多个密钥-不同的用户名,git,authentication,ssh,gitolite,Git,Authentication,Ssh,Gitolite,我已经按照指示安装了gitolite,一切都按计划进行 我有点不确定用户名部分是如何工作的,浏览文档对我没有帮助——也许我遗漏了一些简单的东西 如果我有两台客户端机器,供一个真实的人使用,但是在每台机器上,用户名都是,比如说dave和david。如何组织keydir和任何配置文件中的键,使它们都代表同一用户?我得到后缀的东西,dave@laptop, dave@desktop(我认为),只是不知道如何让不同的客户机用户名连接起来,因为在进行身份验证时似乎会考虑到这一点(可能是因为公钥包含user
非常感谢。您在服务器上的一个用户下安装gitolite;通常是
git
,在SSH连接字符串中,您总是显式使用git@servername
连接到Git用户帐户。Gitolite将查看您提供的公钥,在您的配置中找到它,并将您视为关联用户。您总是这样连接:
git clone gitoliteuser@gitoliteserver:reponame
keydir
|--steve
|--steve@example.com@laptop.pub
|--steve@example.com@desktop.pub
|--services
|--jenkins
|--jenkins@master-buildhost.pub
|--jenkins@slave-buildhost.pub
|--redmine
|--redmine@dev-server.pub
|--jira
|--jira@dev-alias.pub
keydir
|--mfang
| |--laptop01
| | |--mfang.pub
| |--linux01
| | |--mfang.pub
|...etc
无论你是什么用户。Gitolite通过您提供的公钥来标识您。例如,该键名为dave.pub。gitolite将根据配置文件中使用“dave”或“all”的位置仔细检查通过ssh连接使用此公钥执行的任何操作
您可以在不同的机器和不同的存储库上自由设置名称和电子邮件。提交将具有该信息。但是,如果您对ssh使用相同的公钥/私钥,那么您可以读取或写入哪个分支、树或存储库取决于admin repo中配置文件中“dave”的限制方式
希望这有帮助 根据文件,当前推荐的方式
“最简单、最容易理解的方法就是把钥匙放在不同的位置
子目录[在您的/kedir中],(alice.pub,home/alice.pub,
笔记本电脑/alice.pub等)
参考:
老路
如果您询问如何完成以下任务:
david@homecomputer.pub
,david@workcomputer.pub
和david@laptop.pub
。将密钥添加到存储库(git Add keydir/
)、提交(git commit-m“添加了David的附加密钥”
)和将git推回到服务器
Gitolite非常聪明,知道即使它是不同的密钥,用户名(在@
之前)仍然是david
,并允许该用户登录并使用david的ACL
希望这有帮助
要修复您可能有john_home.pub
john_work.pub
的场景,请打开您的gitolite repo(admin repo),并将kedir
中的密钥重命名为john@work.pub
和john@home.pub
commit和push。现在,您的用户john
可以从任意一台计算机登录并使用相同的用户名
请记住,为了使其工作,SSH密钥中的电子邮件地址对于所有用户密钥都必须相同。因此,使用上面的示例,在键david@homecomputer.pub
,david@workcomputer.pub
和david@laptop.pub
所有人的电子邮件地址均应为david@foobar.com
以上是处理此问题的“老办法”,如果您以“电子邮件地址方式”命名您的密钥,则可能会导致复杂性。gitolite没有检查您的密钥是否具有正确的电子邮件地址。请忽略(为了清楚起见,我留下了最初的评论)。这里有一点大家似乎都忽略了,或者至少没有明确回答
OP询问如何在两个不同的平台上使用两个不同的用户名和两个不同(关联)的pub键来处理同一个人
例如。dave@platform_a.pub,及david@platform_b.pub两者都代表相同的真实git用户
在gitolite.conf文件中的“@known”(known users)行中添加dave和david作为用户,并将两个键都放在keydir中是很容易的,但是无法判断这是两个单独的用户还是同一个人
例如,“git责怪”会将dave和david视为两个独立的用户
除了OP的帖子之外,更复杂的是,如果有几个戴维斯在同一个项目上工作,会发生什么
我猜相关的戴维斯必须制定一个系统(或者满足于互相指责;-)。我已经重新组织了几次我的gitolite管理员keydir,但仍然没有真正决定哪种方式是组织事情的最佳方式。如果你能坚持一些惯例,事情肯定会容易一些,但这并不总是可能的。幸运的是,gitolite是灵活的
一般来说,我不喜欢使用包含所有键的单一平面目录,而只依赖于命名约定。”user@host.pub“把事情搞清楚。(这似乎在其他答案中有所暗示?)如果您在多个主机上有多个键,并且一个“真实”用户有多个用户名(或者两个不同主机上的两个不同用户有相同的用户名),则可能会产生混淆。使用子目录有助于组织事物——使用任意深度的树,但通常我只使用一个级别
两个主要选项(甚至是它们的组合):
每个“真实”用户一个目录,每个目录包含多个
那个用户
keydir
|--host1
|--dave.pub
|--david.pub
|--host2
|--dave.pub
keydir
|--steve
|--steve@example.com@laptop.pub
|--steve@example.com@desktop.pub
|--services
|--jenkins
|--jenkins@master-buildhost.pub
|--jenkins@slave-buildhost.pub
|--redmine
|--redmine@dev-server.pub
|--jira
|--jira@dev-alias.pub
keydir
|--mfang
| |--laptop01
| | |--mfang.pub
| |--linux01
| | |--mfang.pub
|...etc