我在我的MacBook上遇到SSH密钥和gitolite问题。
Gitolite运行在我的debian服务器上: gitolite3 3.6.4-1 (Debian) on git 2.7.4
gitolite-admin / keydir我有钥匙bob.pub和admin.pub他们是不同的钥匙。
我的conf文件基本上是:
# this repo repo gitolite-admin RW+ = admin repo myrepo RW+ = bob
我的〜/ .ssh / config文件就是这样来指定我们使用不同的端口:
Host gitserver IdentityFile ~/keys/bob Port 2222
我正在testing命令:
git clone git@gitserver:myrepo.git
这些是/home/git/.gitolite/logs/下的日志
当从我的Linux系统的SSH,它工作正常。
2016-10-14.15:54:53 11635 ssh ARGV=bob SOC=git-upload-pack 'myrepo' FROM=192.... 2016-10-14.15:54:53 11635 pre_git myrepo bob R any refs/.* 2016-10-14.15:54:53 11635 system,git,shell,-c,git-upload-pack '/home/git//repositories/myrepo.git' 2016-10-14.15:54:53 11635 END
但是,当我用我的MacBook Air上的SAME键做同样的事情时,似乎是这样
2016-10-14.15:56:07 11652 ssh ARGV=admin SOC=git-upload-pack 'myrepo' FROM=192.168.0.105 2016-10-14.15:56:07 11652 die R any myrepo admin DENIED by fallthru<<newline>>(or you mis-spelled the reponame)
我认为正在发生:
底层的ssh连接使用正确的用户(git)和密钥(bob)进入服务器。 这是完成使用/home/git/.ssh/authorized_keys(由gitolite生成)我可以在这个文件中看到command="/usr/share/gitolite3/gitolite-shell bob"显示与该键匹配的命令参数是正确。
但是,在SSH连接之后,出于某种原因,命令被更改为具有bob!的参数admin INSTEAD。
再次。 这不会发生在我的Linux机器上。 这只发生在我的MacBook上。
Mac能做些什么是我可以克隆testing或gitolitepipe理。 即使使用bob键,当它真的应该是pipe理员密钥! 我认为这实际上可能是groomight中的一个安全漏洞!
我在跑步。 3.6.4和3.6.5或3.6.6的发行说明中没有任何内容表示修复。
对于来到这里也遇到类似问题的任何人,邮件列表上的gitolite作者的回复是: https : //groups.google.com/d/msg/gitolite/VRLAQaN2QoE/7EWN1I82BQAJ
我build议你在〜/ .ssh / config文件中加上“IdentitiesOnly”这个词,然后重试。 杀ssh代理,钥匙链,或任何types的野兽,并重新启动它们,只添加“bob”键。
为了达到最佳效果,请将pipe理员私钥全部移出。