Mac
gitolite 管理員被 fallthru 拒絕
我的 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)
我認為正在發生的事情:
- 底層 ssh 連接使用正確的使用者 (git) 和密鑰 (bob) 進入伺服器。它是使用 /home/git/.ssh/authorized_keys (由 gitolite 生成)完成的,我實際上可以在這個文件中看到
command="/usr/share/gitolite3/gitolite-shell bob"
與密鑰匹配的命令參數是正確的。- 然而,在 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”密鑰。
為了更好地衡量,請將管理員私鑰完全移出盒子。