Mac

gitolite 管理員被 fallthru 拒絕

  • October 14, 2016

我的 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

我正在使用以下命令進行測試:

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)

我認為正在發生的事情:

  1. 底層 ssh 連接使用正確的使用者 (git) 和密鑰 (bob) 進入伺服器。它是使用 /home/git/.ssh/authorized_keys (由 gitolite 生成)完成的,我實際上可以在這個文件中看到command="/usr/share/gitolite3/gitolite-shell bob"與密鑰匹配的命令參數是正確的。
  2. 然而,在 ssh 連接之後,由於某種原因,命令被更改為使用 bob! 的參數 admin INSTEAD。

再次。它不會發生在我的 linux 機器上。這只發生在我的macbook上。

mac 的工作原理是我可以複製測試或 gitolite-admin。即使使用 bob 密鑰,當它真的應該是管理員密鑰時!我認為這實際上可能是 gitolight 中的一個安全漏洞!

我在跑步。3.6.4 並且 3.6.5 或 3.6.6 的發行說明中沒有任何內容表明修復。

對於遇到類似問題的其他人,gitolite 作者在郵件列表中有回复:https ://groups.google.com/d/msg/gitolite/VRLAQaN2QoE/7EWN1I82BQAJ

我建議您在 ~/.ssh/config 中添加“IdentitiesOnly”一詞,然後重試。殺死 ssh-agent、keychain 或任何此類野獸並重新啟動它們,只添加“bob”密鑰。

為了更好地衡量,請將管理員私鑰完全移出盒子。

引用自:https://serverfault.com/questions/809070