Gitolite

我在使用 Gitolite 設置 IP 限制時遇到了一些問題

  • June 10, 2017

我在使用 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 我也有一些用處。

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