Git 之六 - 使用 Gitolite 搭建 Git 服务器
Gitolite Github Repo
Gitolite 介绍
Gitolite 是一款 Perl 语言开发的 Git 服务管理工具,采用的是 SSH 协议并使用 SSH 公钥认证,能够通过配置文件对写操作进行基于分支和路径的精细授权。
安装环境说明
1 | $ uname -a |
安装基础依赖包
1 | # 切换到Root用户 |
创建 Git 用户
1 | # 如果Git用户已存在则无需再创建,务必确认/home/git/.ssh/authorized_keys文件的内容为空或者不存在 |
创建 Root 用户的 SSH 公钥 / 私钥对
1 | # 进入Root用户家目录下的.ssh目录 |
安装 Gitolite
1 | # 切换到Git用户 |
验证 Gitolite 是否安装成功
1 | # 切换到Root用户 |
gitolite-admin 仓库介绍
gitolite-admin 仓库用于 Git 管理员管理 Git 仓库与分配 Git 仓库权限,以后每次新增仓库、修改权限、更新用户 / 用户组,都需要在这个 clone 下来的 gitolite-admin 仓库下的 conf 目录中进行配置;同时将客户端用户的 SSH 公钥文件上传至 keydir 目录,SSH 公钥文件的文件名以客户端用户名来区分;然后将新增或修改的文件 push 到仓库服务器,push 完后可以看到 /home/git/repositories 下新创建的仓库。
Gitolite 管理示例 - 添加、修改仓库
1 | # 查看当前用户身份,确保当前用户身份是Root用户 |
Gitolite 管理示例 - 删除仓库
1 | # 查看当前用户身份,确保当前用户身份是Root用户 |
Git 客户端(远程客户端)连接 Gitolite 服务器的步骤总结
- Git 管理员在 gitolite-admin 仓库里,配置客户端用户访问对应仓库的权限
- 客户端本地生成 SSH 公钥文件,并交由 Git 管理员上传到 gitolite-admin/keydir 目录下
- 客户端直接使用 Git 命令克隆对应的远程仓库,例如: git clone git@ip:repo-name
- 其他 IDE (例如 Eclipse) 克隆对应的远程仓库,可以直接使用地址: git@ip:repo-name
- git@ip:repo-name,其中 ip 是 Gitolite 服务器的 IP 地址,repo-name 是 Git 远程仓库的名称
Gitolite 防火墙配置说明
使用 Gitolite 搭建 Git 服务器,由于 Gitolite 采用的是 SSH 协议,只需要确保系统开启 SSH 服务,并且防火墙开放了 SSH 端口(默认 22)即可。
解决 Gitolite 安装之后,无法使用 git 用户进行 SSH 远程登录的问题
当安装 Gitolite 后,Gitolite 出于安全问题直接禁用了 git 用户的 SSH 登录权限,因此是无法直接使用 git 用户远程 SSH 连接到服务器的,默认会提示以下错误信息。解决方法是先通过其他 Linux 用户 SSH 远程连接到服务器,然后执行命令”su - git” 切换到 git 用户。
1 | # ssh git@192.168.1.1 |