Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1852476
  • 博文数量: 317
  • 博客积分: 1557
  • 博客等级: 上尉
  • 技术积分: 1208
  • 用 户 组: 普通用户
  • 注册时间: 2008-02-26 23:38
个人简介

如果想出发,就不要等到明天!

文章分类

全部博文(317)

文章存档

2016年(1)

2015年(41)

2014年(152)

2013年(114)

2012年(4)

2011年(1)

2009年(4)

分类: 服务器与存储

2013-02-21 23:05:08


服务器:ubuntu 12.04 (192.168.15.6)

客户端:ubuntu 10.04 (192.168.15.5)


Gitolite 搭建 Git 服务器,实现 Gitolite 服务器管理账户与普通用户无密码访问,且 Gitolite 管理员与普通用户在server上没有登录权限


    1.服务器端:

1.1 创建 Git 服务器专用帐户 gitolite , 并在 /home/gitolite/ 下创建安装目录 bin :

1.2 获取 Gitolite 并安装:


    2. 客户端:

2.1 创建 Gitolite 服务器管理员用户,并创建管理员用户密钥:


2.2 复制(用U盘或者ftp都行,自己想办法)管理员公钥(gitAdmin.pub) 到服务器(192.168.15.6)上的 gitolite 用户目录下:


因为 Gitolite 管理员(gitAdmin)只负责管理 Gitolite,我们的目标是把 Gitolite 管理员以及普通用户的限制在仅能与 Gitolite 交互,

但不能登录服务器帐户(gitolite)shell 对服务器直接操作,所以采用密钥验证的方式,

这样可以避免把服务器登录账户(gitolite)的密码告诉所有使用服务器的用户,即使是 Gitolite 服务器管理员(gitAdmin)。

注:要搞清楚为什么用密钥验证以及如何使用密钥,则要搞清楚 Gitolite 管理员(gitAdmin) ,与服务器上 Gitolite 服务器专用账户(gitolite)的区别:

1)Gitolite 管理员 gitAdmin,只是管理 Gitolite 服务器,对其进行配置、用户管理、Git仓库管理,是不应该知道服务器用户(gitolite)密码的,

    其自身在服务器(192.168.15.6)上面是没有登录账户的,gitAdmin 账户仅用于与 Gitolite 交互

2) Gitolite 服务器专用账户 gitolite ,是服务器上建立的专门用于安装并直接操作 Gitolite 服务器的一个超级用户,只要知道其登录 shell 密码就可以对其进行

    shell登录,并且执行所有需要 gitolite 密码才可以执行的操作,甚至把所有数据包括服务器直接删除。


    3. 服务器端:

3.1 用客户端复制过来的 Gitolite 管理员用户公钥(gitAdmin.pub) 配置 Gitolite 服务器:


3.2 对比客户端上管理员 公钥(gitAdmin.pub) 与 服务器上 ssh 登录认证文件:


由此看出当我们执行 gitolite setup -pk gitAdmin.pub 对 Gitolite 进行配置后,

服务器管理员的公钥(gitAdmin.pub)被追加到服务器账户(gitolite)的ssh登录认证文件(~/.ssh/authorized_keys)里面。

这是否就意味着客户端可以通过 Gitolite 管理员私钥 (~/.ssh/gitAdmin) 进行认证登录服务器用户(gitolite)的 shell 呢?

o(∩_∩)o 哈哈,这就是用密钥认证比直接用密码登录厉害的地方啦!立马看下面的实验!


3.3 在客户端(192.168.15.5)登录管理员(gitAdmin)的shell,并尝试使用 gitAdmin 的私钥(~/.ssh/gitAdmin)进行认证登录服务器(192.168.15.6)

      专用账户(gitolite)的 shell :

o(∩_∩)o 哈哈,看到了吧!即使输入了私钥(gitAdmin)的正确密码,也无法登录到服务器账户(gitolite)的shell,更不用说搞破坏啦。。。


    4.客户端:

4.1 配置管理员访问服务器的别名:

host随便定义,用于客户端标识所连接服务端的名字;

userssh登录服务器的账户;

hostname服务器主机名,或者直接填写服务器 IP 地址;

port:服务器的ssh访问端口,默认22;

identityfile管理员登录服务器所使用的验证密钥;

4.2 使用服务器别名从 Gitolite 服务器 clone Gitolite 服务器管理仓库 gitolite-admin ,验证别名配置是否成功:


    5. 客户端:

5.1 给普通用户创建访问 Gitolite 服务器的密钥:


5.2 复制(U盘、ftp 自己想办法就是)用户公钥(git.pub)给 Gitolite 管理员(gitAdmin):


这里我直接就复制到管理员(gitAdmin)刚才 clone 过来的管理仓库 gitolite-admin 的keydir文件夹里面。

5.3 使用公钥(git.pub)为用户 git 创建一个他能访问的 Git 仓库:

对 gitolite-admin 的操作这里就不详细讲解他的语法级细节,

自己去google或者看官方文档()好了。




5.4 登录拥有私钥(~/.ssh/git)的用户 david ,尝试使用私钥 clone “GarfieldRepo” :

5.4.1 配置服务器访问别名:



5.4.2 使用别名 clone “GarfieldRepo”:


5.5 验证 “GarfieldRepo” 能够正常提交到 Gitolite 服务器:


验证成功!o(∩_∩)o 哈哈!

5.6 最后验证使用私钥(~/.ssh/git)能否登录服务器用户(gitolite)的shell:

o(∩_∩)o 哈哈,同样是不能登录到 gitolite 用户的shell!


总结:服务器端使用 gitolite 专用账户对服务器经行最高级别的安装维护,通过从客户端导入公钥到服务器,

客户端无论是管理员(gitAdmin),还是普通用户david,分别都可以通过他们的私钥与 Gitolite 服务器进行交互,

同时实现了他们仅能跟 Gitolite 服务器的交互,不能登录到服务器shell直接操作的限制。






阅读(14293) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

lion38752016-06-13 10:07:55

这是我看到过的关于ubuntu+gitolite3讲的最清楚,最准确的一篇文章