您的位置:首页 > 运维架构 > Linux

Linux学习笔记——搭建Git服务器

2017-08-31 23:07 204 查看
GitHub就是一个免费托管开源代码的远程仓库。但是对于某些视源代码如生命的商业公司来说,既不想公开源代码,又舍不得给GitHub交保护费,那就只能自己搭建一台Git服务器作为私有仓库使用。

服务机操作步骤如下:

一、安装git和ssh协议客户/服务软件

$ sudo apt install git openssh-server openssh-client
(安装openssh-server和openssh-client是由于git需要通过ssh协议来在服务器与客户端之间传输文件)

二、系统创建一个用户并设置git管理者及邮箱,用来管理git服务

$ sudo adduser AdminName
$ git config --global user.name "AdminName"
$ git config --global user.email "email@example.com"

三、创建ssh key,因为git服务器与用户间的文件传输是通过ssh协议加密的
$ ssh-keygen -t rsa -C "email@example.com"
该命令执行后可以在用户主目录里找到.ssh目录,里面有id_rsa和id_rsa.pub两个文件,即私钥和公钥。

四、初始化Git服务器仓库

假定repositories作为Git目录,下面命令在该目录下新建一个git仓库

$ sudo mkdir /home/AdminName/repositories
$ sudo git init --bare /home/AdminName/repositories/reponame.git

五、修改Git目录和Git仓库到指定权限,否则客户机无法通过ssh协议访问Git服务器上的文件
$ sudo chmod 700 /home/AdminName/repositories
$ sudo chmod 777 -R /home/AdminName/repositories/reponame.git
六、安全设置

出于安全考虑,git用户不允许登录shell,这可以通过编辑/etc/passwd文件完成。

找到类似下面的一行:

git:x:1001:1001:,,,:/home/git:/bin/bash 改为:git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell

这样,git用户可以正常通过ssh使用git,但无法登录shell,因为我们为git用户指定的git-shell每次一登录就自动退出。

七、公钥管理

如果团队很小,把每个允许访问的人的公钥收集起来放到服务器的/home/git/.ssh/authorized_keys文件里(需自己创建)就可以了。如果团队有几百号人,就没法这么玩了,这时,可以用Gitosis来管理公钥,这个就不细说了。

客户机操作步骤如下:

$ git clone AdminName@ip:repositories/reponame.git
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: