跳至主要內容

搭建 git 私服

njrlinux项目部署git大约 4 分钟约 1161 字

提示

git 私服作用:

  • 自己电脑和公司(或者实验室)电脑随时同步资料
  • GitHub、Gitee 私有仓库都是限流的,文件一旦多了,或者有图片文件,git pull 的时候半天拉不下来
  • 保存一些隐私文件

开始搭建

  • 服务器:centos7.9
  • 本地电脑: Windows10

如果服务器没装 git 可以使用以下命令安装:

yum install git

创建 git 用户

创建一个 Git 的 Linux 账户,这个账户只做 Git 私服的操作,之后就要设置 Linux Git 账户的密码,但由于我之前已经 设置了 ssh 登录,因此不用设置密码。

adduser git

后面所有的操作都在 git 用户下进行:

[root@instance-5fcyjde7 ~]su - git

看一下自己所在的目录,是不是在 git 目录下面:

[git@instance-5fcyjde7 ~]$ pwd
/home/git

服务器端密钥管理

创建 .ssh 目录,如果 .ssh 已经存在了,可以忽略这一项。方便每次操作 Git 仓库的时候不用再去输入密码。

cd ~/
mkdir .ssh

进入 .ssh 文件下,创建一个 authorized_keys 文件,并给 authorized_keys 文件设置权限。这个文件用来存放客户端的公钥。

cd ~/.ssh
touch authorized_keys
chmod 700 /home/git/.ssh
chmod 600 /home/git/.ssh/authorized_keys

接下来要把客户端的公钥放在 Git 服务器上,我们再回到客户端,创建一个公钥。

在我们自己的电脑上,有公钥和私钥。两个文件分别是:id_rsaid_rsa.pub

如果是 Windows 系统公钥私钥的目录在 C:\Users\用户名.ssh 下。

如果是 Mac 或者 Linux, 公钥和私钥的目录这里 cd ~/.ssh/, 如果发现自己的电脑上没有公钥私钥,那就自己创建一个。

创建密钥的命令:

ssh-keygen -t rsa

创建密钥的过程中,一路点击回车就可以了,不需要填任何东西。把刚刚生成的 id_rsa.pub,拷贝到 Git 服务器的 /home/git/.ssh/ 目录。

在 Git 服务器上,将公钥添加到 authorized_keys 文件中:

cd /home/git/.ssh/
cat id_rsa.pub >> authorized_keys

在客户直接登录 Git 服务器,验证是否配置成功:

ssh git@git 服务器 ip
# 例如:
ssh git@127.0.0.1

如果可以免密登录,那就说明服务器端密钥配置成功了。

在这里我还出现了一个错误:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
51:82:00:1c:7e:6f:ac:ac:de:f1:53:08:1c:7d:55:68.
Please contact your system administrator.
Add correct host key in /Users/isaacalves/.ssh/known_hosts to get rid of this message.
Offending RSA key in /Users/isaacalves/.ssh/known_hosts:12
RSA host key for 104.131.16.158 has changed and you have requested strict checking.
Host key verification failed.

出现这个错误的原因是因为我更新了 ssh key,使用以下命令删除无效的 key 即可:

ssh-keygen -R "服务器 ip"

服务器端部署 Git 仓库

接下来在服务器上部署 git 仓库。

登录到 Git 服务器端,切换为 Git 账户。如果是 root 账户切换成 Git 账户:

su - git

如果是其他账户切换为 Git 账户:

sudo su - git

进入 git 目录下:

cd ~/git

创建一个文件夹名为 world.git.git 后缀表明这是一个 git 仓库而不是别的什么文件。

[git@localhost git]# mkdir world.git
[git@localhost git]# cd word.git

初始化 word 仓库:

git init --bare

如果想创建多个仓库,就在 git 用户下的 ~/git 目录创建多个文件夹并初始化就可以了。

现在服务端的 Git 仓库就部署完了,接下来就能像平时使用 github 一样使用这个 Git 私服了。

客户端连接远程仓库

在自己的电脑上创建一个文件夹也叫做 world

提示

其实这里命名是随意的,但是我们为了和 Git 服务端的仓库名称保持同步。这样更直观我们操作的是哪一个仓库。

mkdir world
cd world

进入 world 文件,并初始化操作:

cd world
git init

world 目录上创建一个测试文件,并且将其添加到 Git 私服中:

touch test
git add test
git commit -m "test git server"

将本地仓库和远端仓库同步:

git remote add origin git@服务器 ip:world.git
git push -u origin master

此时这个 test 测试文件就已经提交到我们的 Git 远端私服上了。

参考链接