栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

gitolite 搭建 Android仓库(一)

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

gitolite 搭建 Android仓库(一)

gitolite – 搭建授权管理

平时在github上创建仓库、推拉代码、创建 Pull/Merge Request、发起 Issue 。
如果是本地代码 git 只能跟踪的代码信息,无法完成如上操作。本文介绍利用 gitolite 搭建本地git存档信息平台,可以实现类似功能。


提示:此文章仅为搭建gitolite,下一篇为 gitote 托管 Android 代码仓库repo。

文章目录
  • gitolite -- 搭建授权管理
  • Gitolite 实现目标
  • 1. 创建gitolite 管理用户
  • 2. 安装 gitolite
    • 2.1 gitolite管理服务端
    • 2.2 gitolite管理客户端
  • 总结


Gitolite 实现目标

a) 搭建本地git 或 repo 仓库,拉去云仓,管理本地代码
b) 用最小的配置完成安全的权限管理;管控连接代码仓授权密钥
c) 用户密钥一对一,根据分配用户在各个代码仓不同权限


1. 创建gitolite 管理用户

如果使用当前用户可以跳过此步骤;如果新建用户的话,建议用户为 git,方便代码维护下载。此前因新未新建用户,搭建完成后使用 URL git@IP/xxx.git 始终无法同步代码,原因为ssh 连接用户并非 gitolite 管理用户名。

sudo useradd git

如果分配空间指定目录 给用户 git, 例如 /build 目录

sudo useradd -d /build -m -s /bin/bash git

设置用户密码,并切换用户

sudo passwd
su - git
2. 安装 gitolite 2.1 gitolite管理服务端

安装ssh git keychain(私钥管理工具)

sudo apt-get install openssh-server git keychain

克隆gitolite安装包

cd ~
git clone git://github.com/sitaramc/gitolite

创建安装bin目录 并安装gitolite

mkdir -p ~/bin
./gitolite/install -to ~/bin

用户下重新生成一个密钥,生成密钥用作 gitolite 服务端管理员密钥

ssh-keygen -t rsa -f ~/.ssh/git

设置刚生成密钥为管理员密钥。如果使用公钥路径为~/.ssh/git.pub,如果使用私钥 ~/.ssh/git

~/bin/gitolite setup -pk ~/.ssh/git.pub
已初始化空的 Git 仓库于 /home/hasee/repositories/gitolite-admin.git/
已初始化空的 Git 仓库于 /home/hasee/repositories/testing.git/

此时gitolite 配置成功。此时用户目录生成projects.list(项目列表) repositories(代码仓库)。如果出现如下错误,说明你在使用和登录用的同一个key。

WARNING: keydir/git_key.pub duplicates a non-gitolite key, sshd will ignore it

a) 前面的设置一般情况下是通过ssh连接到服务器,故需要用户名(即git)和 key(通过ssh-keygen 命令生成),因为此key可直接登录服务器,不适合做git管理员。
b) ~/.ssh/authorized_keys 中,git授权的格式和ssh授权的格式不同,做了扩展,无法通用。
想回退上面的命令发现失效,按照文档说的去做(文档写的是直接重新执行,就会覆盖)也是失效的,删掉gitolite,重新操作一遍。
主要的配置在 $HOME/.gitolite 和 $HOME/.gitolite.rc 连同repositories 需要一并删掉,否则还是会出现上面的错误。

此时查看 .ssh/authorized_keys 授权文件。

$ cat /home/git/.ssh/authorized_keys
ssh-rsa ************************************** git@namenode
# gitolite start
command="/home/git/gitolite/src/gitolite-shell git_admin",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty ssh-rsa ***************************** git@namenode
# gitolite end
2.2 gitolite管理客户端

客户端的key需要是git的管理员key,即上面的 git.pub。
clone时git仓库需要写相对于repository的相对路径。格式为 ssh://userName@IP:port/gitolite-admin.git。
以本机用户(git)获取管理终端为例

cd ~
git clone git@127.0.0.1:gitolite-admin.git

以testing仓库为例添加新 用户user。repo testing 用户被授权的代码仓,R为权限,W为写权限。
修改conf/gitolite.conf 文件,添加 user用户仓库读写权限。

diff --git a/conf/gitolite.conf b/conf/gitolite.conf
index ae1dc08..96517a3 100644
--- a/conf/gitolite.conf
+++ b/conf/gitolite.conf
@@ -1,2 +1,8 @@
repo xxx
-    RW+     =   git
+    RW+     =   git user

将用户密钥(user.pub)拷贝到 gitolite-admin/conf/,提交时需要一并提交。
修改提交到远程分支后,需等待gitolite遍历完成方可生效。

总结

以上为 gitolite服务端和授权管理终端待建过程。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/890978.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号