git服务器配置

服务器: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: 随便定义,用于客户端标识所连接服务端的名字;

user :ssh登录服务器的账户;

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或者看官方文档(http://sitaramc.github.com/gitolite)好了。




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直接操作的限制。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值