企业级git服务器搭建和仓库权限管理

 

 

Git客户端配置流程

 

1. 配置用户名密码

git config --global user.name “用户名”

git config --global user.email  “邮箱”

用户名建议使用个人姓名,这在提交代码时记录的Author即为你配置的用户名

邮箱可以为任意的内容,为了规范性建议填上本人的腾讯邮箱地址

2. 生成公钥文件

ssh-keygen -t rsa

第一步输入公钥文件生成位置(默认路径c/Users/Administrator/.ssh)

扫描二维码关注公众号,回复: 11570006 查看本文章

第二步输入密码,你可以不输入直接回车,也可以输入密码,这是你push/pull等操作的时候需要输入的密码,不输入即没有密码,输入密码可以提高安全性

3. 提供公钥文件

打开公钥文件生成路径,在.ssh目录下有一个id_rsa.pub即为公钥文件,提供给git管理员进行配置后,你就可以利用id_rsa私钥文件来拉取远程的仓库和提交代码了

4. 拉取远程仓库

git clone [email protected]:/xxx/xxx.git

配置好公钥之后,根据git管理员提供的仓库地址进行拉取即可

 

 

 

Git服务端配置流程

1. 添加用户

#添加一个git用户,作为管理git的用户

adduser git

2. 新建存放公钥的文件

# 创建目录.ssh

mkdir /home/git/.ssh

# 给该目录授予权限700

chmod 700 /home/git/.ssh

# 创建文件authorized_keys

touch /home/git/.ssh/authorized_keys

 # 给该文件授予权限600

chmod 600 /home/git/.ssh/authorized_keys

 # 由于权限设置问题(只有“文件所有人”才能操作),需要把把“文件所有人”更改为git用户

chown -R git:git /home/git/.ssh/

3. 开启RSA认证

vim /etc/ssh/sshd_config

# 修改sshd_config配置文件,追加以下三行 

RSAAuthentication yes

PubkeyAuthentication yes

AuthorizedKeysFile .ssh/authorized_keys

# 使该配置文件即时生效

systemctl restart sshd

4. 创建仓库(这个步骤可以忽略,直接跳到第6步,测试步骤)

# 新建一个空白目录blog.git,作为Git仓库

mkdir -p /home/gitrepo/blog.git

# 初始化仓库,--bare表示只生成一个裸仓库,没有工作目录(.git),会保存git历史提交的版本信息。

git init --bare /home/gitrepo/blog.git

# 将该目录的所有人改为git用户

cd /home/gitrepo

chown -R git:git blog.git

5. 配置客户端公钥(这个步骤可以忽略,直接跳到第6步,测试步骤)

# 在authorized_keys文件里面添加即可,一行一个公钥

vi /home/git/.ssh/authorized_keys

6. Git仓库权限管理

 

# 切换到git账号

$ su git
# 进入git主目录

$ cd /home/git
# 下载gitolite的仓库

$ git clone https://github.com/sitaramc/gitolite
# 创建bin文件夹,必须!!!

$ mkdir -p $HOME/bin

# 用下载下来的仓库中的insall执行安装操作,指向的目录就是上一命令行创建的目录

$ ./gitolite二进制/install -to $HOME/bin

# 把上传到服务器的 管理员的公钥setup到gitolite中,注意:YourName.pub改成你自己的文件名。通过xshell上传上去的pub配置会报错FATAL: die'*.pub' not a readable file,只有通过scp上传到git用户地址才能正常配置scp *pub git@ip:*pub

 

$ ~/bin/gitolite setup -pk admin.pub

# repositories目录下已经有了两个git仓库了。

-- gitolite-admin.git    # 管理配置权限的仓库

-- testing.git          # 测试仓库

 

 #下载远程管理仓库, 请把aicoder.com换成你自己服务器的域名或者ip

$ git clone [email protected]:gitolite-admin

$ cd gitolite-admin

# 目录结构如下:

# ├── conf              # 配置文件夹

# │   └── gitolite.conf    # 配置权限的文件

# └── keydir    # 客户端的公钥文件夹,所有伙伴的公钥要放到此目录下

#     └── melon.pub

 

添加其他开发的小伙伴

 

把小伙伴的公钥发给管理员。管理员添加到gitolite-admin仓库的keydir目录下,注意文件名字格式为username.pub,username就是配置权限时的用户名。

 

配置用户对仓库的读写权限

 

直接修改conf文件夹下的,gitolite.conf文件。简单解释下几个用法:

repo代表仓库的意思,如果新添加一个repo,代表服务端新建一个空仓库,仓库push到服务端后会自动创建。

RW 代表可读可写

@all 代表所有人。

master和 dev代表分支

参考:

@admin = malun  

@om = malun bcd  

repo gitolite-admin  

    RW+     =   malun

repo testing  

    RW+     =   @all  

repo om  

    RW+     =   @admin  

    RW+ master = @admin  

    RW+ dev  =   @om  

 

应用修改到服务器端

做好配置后,由管理员把修改push到服务器端,会自动处理。

$ git add conf

$ git add keydir

$ git commit -m "added foo, gave access to alice, bob, carol"

$ git push

 

7. 禁止客户端shell登录

因为前面我们添加了客户端的ssh的公钥到远程服务器,所以客户端可以直接通过shell远程登录服务器,这不安全,也不是我们想要的。且看下面如何禁用shell登录:

 

$ vim /etc/passwd

# 可以通过 vim的正则搜索快速定位到这行,  命名模式下  :/git:x

# 找到这句, 注意1000可能是别的数字

git:x:1000:1000::/home/git:/bin/bash
# 改为:

git:x:1000:1000::/home/git:/bin/git-shell

 

 

 

猜你喜欢

转载自blog.csdn.net/weixin_28927079/article/details/107929425