编辑: kieth | 2014-10-14 |
1 Amlogic, Inc.
3930 Freedom Circle Santa Clara, CA
95054 U.S.A. www.amlogic.com Legal Notices ?
2013 Amlogic, Inc. All rights reserved. Amlogic ? is registered trademarks of Amlogic, Inc. All other registered trademarks, trademarks and service marks are property of their respective owners. This document is Amlogic Company confidential and is not intended for any external distribution. Amlogic Application Notes Amlogic Confidential 2/41 目录 1. 简介.5 2. SSH 协议
6 2.1 什么是 SSH
6 2.2 SSH 帐号的登录
6 2.3 SSH 实现 git 的方式.6 2.4 SSH 帐号的种类
7 2.5 标准 SSH 帐号的共用
7 2.6 SSH 公钥认证
8 2.7 SSH 主机别名
9 3. 什么是 Gitolite.10 4. 安装 Gitolite.12 4.1 服务器端创建专用帐号.12 4.2 安装/升级 Gitolite.13 4.3 关于 SSH 主机别名
16 4.4 Gitolite 的其它安装方法
17 5. 管理 Gitolite.18 5.1 管理员克隆 gitolite-admin 管理库.18 5.2 增加新用户
19 5.3 更改授权
21 6. Gitolite 授权详解.23 6.1 授权文件的基本语法.23 6.2 定义用户组和版本库组.24 6.3 版本库 ACL
24 6.4 Gitolite 授权机制
25 7. 版本库授权案例.26 7.1 对整个版本库进行授权.26 7.2 通配符版本库的授权.27 7.3 用户自己的版本库空间.28 7.4 对引用的授权:传统模式.29 7.5 对引用的授权:扩展模式.30 Amlogic Application Notes Amlogic Confidential 3/41 7.6 对引用的授权:禁用规则的使用.31 7.7 用户分支
31 7.8 对路径的写授权.32 8. 创建新版本库.33 8.1 在配置文件中出现的版本库,及时创建.34 8.2 通配符版本库,管理员通过 push 创建.35 8.3 直接在服务器端创建.36 9. 对Gitolite 的改进.37 10. Gitolite 功能扩展
38 10.1 版本库镜像
38 10.2 Gitweb 和Gitdaemon 支持
40 10.3 其它功能扩展和参考
41 Amlogic Application Notes Amlogic Confidential 4/41 修改记录 Revision Date Owner Changes 0.1 March 26,
2013 Cary Wu Draft Amlogic Application Notes Amlogic Confidential 5/41 1. 简介 如果不是要和他人协同开发,git 根本就不需要架设服务器.git 在本地可以直接使用本地版本库 的路径完成 git 版本库间的操作. 但是如果需要和他人分享版本库、协作开发,就需要能够通过特定的网络协议操作 git 库.git 支 持的协议很丰富,架设服务器的选择也很多,不同的方案有着各自的优缺点(表1.1). HTTP GIT-DAEMON SSH GITOSIS, GITOLITE 服务架设难易度 简单 中等 简单 复杂 匿名读取 支持 支持 否* 否* 身份认证 支持 否 支持 支持 版本库写操作 支持 否 支持 支持 企业级授权支持 否否否支持 是否支持远程建库 否否否支持 表1.1 - git 支持的协议对照表 :SSH 协议和基于 SSH 的Gitolite 等可以通过空口令帐号实现匿名访问. Amlogic Application Notes Amlogic Confidential 6/41 2. SSH 协议 2.1 什么是 SSH SSH 为Secure Shell 的缩写,由IETF 的网络工作小组(Network Working Group)所制定.SSH 是 建立在应用层和传输层基础上的安全协议.SSH 是目前较可靠,专为远程登录会话和其他网络服务 提供安全性的协议.利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题.SSH 最初是 UNIX 系统上的一个程序,后来又迅速扩展到其它操作平台.SSH 在正确使用时可弥补网络中的漏洞. SSH 客户端适用于多种平台.几乎所有 UNIX 平台,包括 HP-UX,Linux,AIX,Solaris,Digital UNIX,Irix,以及其它平台,都可运行 SSH. SSH 协议用于为 git 提供远程读写操作,是远程写操作的标准服务,在智能 HTTP 协议出现之前, 甚至是写操作的唯一标准服务. 2.2 SSH 帐号的登录 对于拥有 shell 权限的 SSH 帐号,可以直接用下面的 git 命令登录: $ git clone @:/path/to/repo.git ? 是服务器上的用户帐号. ? /path/to/repo.git 是服务器中版本库的绝对路径.若用相对路径则相对于 username 用户的主 目录而言. ? 如果采用口令认证,不能像 HTTPS 协议那样可以在 URL 中同时给出登录名和口令,必须每次连 接时输入. ? 如果采用公钥认证,则无须输入口令. 2.3 SSH 实现 git 的方式 SSH 协议来实现 git 服务,有两种方式: ? 用标准的 SSH 帐号访问版本库.即用户帐号可以直接登录到服务器,获得 shell. ? 所有用户都使用同一个专用的 SSH 帐号访问版本库.各个用户通过公钥认证的方式用此专用 SSH 帐号访问版本库.而用户在连接时使用的不同的公钥可以用于区分不同的用户身份. Gitosis 和Gitolite 就是实现该方式的两个服务器软件. Amlogic Application Notes Amlogic Confidential 7/41 2.4 SSH 帐号的种类 SSH 账号有标准 SSH 和专用 SSH 两种(表2.1): 标准 SSH GITOSIS/GITOLITE 帐号 每个用户一个帐号 所有用户共用同一个帐号 认证方式 口令或公钥认证 公钥认证 用户是否能直接登录 shell 是否安全性 差好管理员是否需要 shell 是否版本库路径 相对路径或绝对路径 相对路径 授权方式 操作系统中用户组和目录权限 通过配置文件授权 对分支进行写授权 否Gitolite 对路径进行写授权 否Gitolite 架设难易度 简单 复杂 表2.1 - 标准 SSH 帐号和专用 SSH 帐号的对照表 2.5 标准 SSH 帐号的共用 实际上,标准 SSH,也可以用公钥认证的方式实现所有用户共用同一个帐号.不过这类似于把一个 公共帐号的登录口令同时告诉给多个人: ? 在服务器端创建一个公共帐号,例如 anonymous . ? 管理员收集需要访问 git 服务的用户公钥,例如 user1.pub 和user2.pub . ? 使用 ssh-copy-id 命令远程将各个 git 用户的公钥加入服务器的公钥认证列表中. $ ssh-copy-id -i user1.pub anonymous@server $ ssh-copy-id -i user2.pub anonymous@server ? 如果直接在服务器上操作,则直接将文件追加到 authorized_keys 文件中. $ cat /path/to/user1.pub >