3 回答

TA貢獻1784條經驗 獲得超2個贊
~/.ssh/authorized_keys
command="[path]/gitolite-shell sitaram",[more options] ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA18S2t... command="[path]/gitolite-shell usertwo",[more options] ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEArXtCT...
首先,它會發現該文件中的哪個公鑰與傳入的登錄名匹配。一旦找到火柴, 它將運行該行上的命令。例如,如果我登錄,它就會運行 [path]/gitolite-shell sitaram
.所以首先要注意的是,這樣的用戶沒有獲得“shell訪問”,這是很好的!
(強制命令=沒有交互式shell會話
但是,在運行命令之前, sshd
設置一個環境變量,稱為 SSH_ORIGINAL_COMMAND
,其中包含實際的 git
您的工作站發出的命令。 如果您沒有 command=
在授權的密鑰文件中。
什么時候 gitolite-shell
獲取控件時,它將查看第一個參數(“ sitaram
", "usertwo
“,等等)以確定您是誰。然后查看 SSH_ORIGINAL_COMMAND
變量來查找要訪問的存儲庫,以及您是在讀還是寫。
現在它已經 請求的用戶、存儲庫和訪問(讀/寫),gitite查看其配置文件,并允許或拒絕請求。
authorized_keys
gitolite-shell
print_version()
info
sub print_version { chomp( my $hn = `hostname -s 2>/dev/null || hostname` ); my $gv = substr( `git --version`, 12 ); $ENV{GL_USER} or _die "GL_USER not set"; print "hello $ENV{GL_USER}, this is " . ($ENV{USER} || "httpd") . "\@$hn running gitolite3 " . version() . " on git $gv\n"; }
hello admin, this is git@server running gitolite3 v3.0-12-ge0ed141 on git 1.7.3.4

TA貢獻1868條經驗 獲得超4個贊

TA貢獻2041條經驗 獲得超4個贊
檢查試圖登錄的人的公鑰 將公鑰映射到訪問控制列表。
添加回答
舉報