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个赞
检查试图登录的人的公钥 将公钥映射到访问控制列表。
添加回答
举报