Gitolite
我在使用 Gitolite 設置 IP 限制時遇到了一些問題
我在使用 Gitolite 設置 IP 限制時遇到問題。它可能很簡單,這是我第一次使用它(我終於從 Gitosis 切換了,因為它不能做我需要的事情)
基本上我的客戶站點都有一個 git repo。我推送到那個 repo 並且 post-receive 鉤子推送到她的實時站點或開發,這取決於我推送到的位置。無論如何,問題是客戶想要訪問她網站上的文件,我對此沒有意見,但因為她可以訪問她在 ~/.ssh 中的 repo 的 SSH 密鑰,所以她將直接訪問我不想從 Web 伺服器外部允許的儲存庫。
這是我的配置的相關部分:
repo example.com R VREF/FROM/127.0.0.1 = user
除非 Gitolite 生成錯誤的 authorized_keys 文件,否則這將起作用:
command="/usr/share/gitolite/gl-auth-command user",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty ,from="127.0.0.1" ssh-rsa...
問題是 no-pty 之後的空間。刪除空間,它工作正常。保留空格,鍵被忽略。
任何有關如何正確設置的想法都將不勝感激!我真的不想每次更改某些內容時都在 authorized_keys 文件上執行 sed ,除非沒有其他辦法…
謝謝!
gitolite 食譜“範例 2:按源 IP 地址限制”顯示此 VREf 不會向授權密鑰添加任何內容。
並且 VREF 在 gitolite V3 中更好地定義(而不是gitolite V2 中的虛擬參考)。
解決方案:
1 使觸發器/ ip-limit 包含
#!/bin/bash # # ip-limit # UnrestrictedUserName=Me PermittedIP=127.0.0.1 if [ "$GL_USER" == "$UnrestrictedUserName" ] ; then exit 0; fi IP=$(echo $SSH_CLIENT | perl -pe 's/ .*//g'); if [ "$IP" != "$PermittedIP" ] ; then echo "You ($GL_USER) are not permitted from the IP ($IP)" >&2 exit 1; fi exit 0
2 指導 gitolite 使用它:
chmod 0777 triggers/ip-limit cp .gitolite.rc .gitolite.rc.origonal perl -pi -e 's/(^.*ENABLE)/ PRE_GIT => ['\''ip-limit'\''],\n$1/g' .gitolite.rc
筆記:
- VREF 僅在推送時呼叫,因此不能用於限制獲取等。
- GL_REPO 我也有一些用處。