GitHub就是一个免费托管开源代码的远程仓库。但是对于某些视源代码如生命的商业公司来说,既不想公开源代码,又舍不得给GitHub交保护费,那就只能自己搭建一台Git服务器作为私有仓库使用。
服务机操作步骤如下:
一、安装git和ssh协议客户/服务软件
$ sudo apt install git openssh-server openssh-client
(安装openssh-server和openssh-client是由于git需要通过ssh协议来在服务器与客户端之间传输文件)
$ 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