之前一直把自己的代码托管到github上面,但是有些代码是不希望被别人看到的,github的私人仓库每年要好几十$,没有办法,就想着自己构建一个Git服务器;

下面我就如何在linux下构建自己的git服务器进行步骤解析;

1:首先在Linux下安装Git,这里提供两种方法,第一种下载git压缩包,拖到服务器下进行解压;

第二种直接在线安装 yum install -y git ;本人推荐第二种,因为之前自己用第一种缺了很多东西,花了很久也没搞定就放弃了;


2:创建用户:adduser  ***(***为自己创建用户名例如:git)

3:初始化仓库;git init -- bare  test.git初始化成功后,你就会看到初始化仓库的目录;

4:执行3命令后,会创建一个裸仓库,裸仓库没有工作区,因为服务器上的Git仓库纯粹是为了共享,所以不让用户直接登录到服务器上去改工作区,并且服务器上的Git仓库通常都以.git结尾。然后,把owner改为git:

chown -R git:git test.git 这个步骤千万不能忘记,不然你在往远端推动过程中会出错;


5:创建证书登录:收集所有需要登录的用户的公钥,就是他们自己的id_rsa.pub文件,把所有公钥导入到/home/git/.ssh/authorized_keys文件里,一行一个;这里需要说明的是.ssh/authorized_keys这个文件夹以及文件都是在shell中看不到的,所以我们只能使用vi命令,把公钥写进去并保存(Esc退出,:wq保存);

id_rsa.pub文件文件怎么来的?

首先在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件,如果已经有了,可直接5。如果没有,打开Shell(Windows下打开Git Bash),创建SSH Key:
$ ssh-keygen -t rsa -C "youremail@example.com"  
你需要把邮件地址换成你自己的邮件地址,然后一路回车,使用默认值即可,由于这个Key也不是用于军事目的,所以也无需设置密码。如果一切顺利的话,可以在用户主目录里找到.ssh目录,里面有id_rsa和id_rsa.pub两个文件,这两个就是SSH Key的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人。

6:禁用git用户的shell登陆
出于安全考虑,第二步创建的git用户不允许登录shell,这可以通过编辑/etc/passwd文件完成。找到类似下面的一行:
git:x:50:50:,,,:/home/git:/bin/bash  最后一个冒号后改为:git:x:50:50:,,,:/home/git:/usr/bin/git-shell  这样,git用户可以正常通过ssh使用git,但无法登录shell,因为我们为git用户指定的git-shell每次一登录就自动退出。

7:克隆远程仓库:现在,可以通过git clone命令克隆远程仓库了,在各自的电脑上运行:

说明:之前有朋友问可以上传文件到仓库,也可以从仓库克隆下来,但是为什么在服务器上就找不到上传的文件咧?

这是因为仓库没有工作区,所以看不见传上来的文件意思就是不能直接修改,我们可以clone下来,修改后再commit;没工作区无法直接修改文件