[Git] 代码管理之 Git(三)Git 服务器的搭建

2021-02-24 11:07:24 浏览数 (1)

我们平时使用git的时候,都是我们直接去拉取别人的仓库的代码,然后修改后提交到git服务器去,那如果我们想自己搭建自己的Git服务器该怎么做呢?

建立仓库

首先登录到我们准备用来做服务器的机子上,我这里直接用WSL的Ubuntu 20.04了。如果做过Linux管理的一般知道,我们首先需要给这台Git服务器建立用户组和用户(如果不存在的话),所以我们使用下面的命令:

代码语言:javascript复制
- sudo useradd git // 建立名为git的用户
- sudo groupadd git // 建立名为git的用户组
- sudo usermod -G git git // 将git用户添加到git用户组

好,完成上面的基础工作后,我们接下来要建立git的仓库目录。

代码语言:javascript复制
- mkdir /home/starxiang/git_test // 建立名为git_test的仓库,此仓库即作为git服务器仓库的根。

建立好目录后,那么接下来我们进入到此目录中,使用下面的命令来建立一个“裸”仓库

代码语言:javascript复制
- git init --bare
Initialized empty Git repository in /home/starxiang/git_test/

为什么要加上 --bare 呢,加上–bare代表当前目录下建立的仓库为裸仓库,裸仓库是没有工作区的,因为这是Git的服务器,我们以后使用的时候都是向它提交代码,服务器本身是不需要工作区的。

然后我们希望git的这个根目录对于git用户是可读可写的,所以我们更改下权限

代码语言:javascript复制
- sudo chown -R git:git /home/starxiang/git_test/

之后我们再查看下目录下的文件来确认下权限

代码语言:javascript复制
- ls -l   // 查看当前目录
total 32
-rw-r--r-- 1 git git   23 Dec  1 22:06 HEAD
drwxr-xr-x 2 git git 4096 Dec  1 22:06 branches
-rw-r--r-- 1 git git   66 Dec  1 22:06 config
-rw-r--r-- 1 git git   73 Dec  1 22:06 description
drwxr-xr-x 2 git git 4096 Dec  1 22:06 hooks
drwxr-xr-x 2 git git 4096 Dec  1 22:06 info
drwxr-xr-x 4 git git 4096 Dec  1 22:06 objects
drwxr-xr-x 4 git git 4096 Dec  1 22:06 refs
- ls -l ..  // 查看上级目录
total 4
drwxr-xr-x 7 git git 4096 Dec  1 22:06 git_test

然后我们就可以到本地来clone建立的仓库了。

代码语言:javascript复制
- git clone git@00.00.00.00 /home/starxiang/git_test
Cloning into 'git_test'...
git@IP's password:   // 此处输入密码
warning: You appear to have cloned an empty repository.

这样,我们服务器上的仓库就被拉到本地了,当然,现在里面还没有东西。

RSA认证

我们在上面登录Git服务器的时候,是要输入密码的,但是每次提交的时候都输密码不免非常麻烦,那么我们有没有办法免除输入密码的这个流程呢。

办法是有的,那就是通过rsa认证,生成公钥和私钥,然后把客户端的公钥告诉git服务器。

在我们(客户端)的机器上,打开git bash shell,生成rsa的秘钥对

代码语言:javascript复制
- ssh-keygen –t rsa

命令后一路按回车,此时会在c:/Users/starx/.ssh/目录下生成 id_rsa.pubid_rsa 文件,其中 id_rsa.pub 是公钥文件,id_rsa 是私钥文件

代码语言:javascript复制
$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/starx/.ssh/id_rsa):
/c/Users/starx/.ssh/id_rsa already exists.
Overwrite (y/n)? y
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /c/Users/starx/.ssh/id_rsa.
Your public key has been saved in /c/Users/starx/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:u40VcA9fatNUwNL6RMoXx1sQt9O5KAzZluOAkRY04HI starx@DESKTOP-T
The key's randomart image is:
 ---[RSA 3072]---- 
|     .o=o    o =o|
|    .  o  o o =oB|
|   . E... o* =o* |
|    o    o* == .o|
|        S . *=.. |
|         . o...  |
|        . .      |
|         =       |
|        o .      |
 ----[SHA256]----- 

然后我们到这个目录里去看看这对密钥长什么样子。首先我们看 id_rsa

然后公钥是以 ssh-rsa 开头的一大长串的字符。

然后我们到服务器上同样的步骤生成密钥,然后在生成密钥的文件夹下,创建(没有的情况下)一个 authorized_keys 的文件

代码语言:javascript复制
touch authorized_keys

然后把客户端的 id_rsa.pub的文件内容复制(追加)到这个authorized_keys 文件中即可。之后就不需要每次都输入密码了。

0 人点赞