linux服务器搭建git并配置秘钥及服务器端自动更新

简介: git不同于svn,通常不需要建像svn那摩多的用户,基本上,大家共同使用一个用户,在各自的电脑上配置好公钥及私钥就可以了。当然,如果你有需求需要多个用户协同管理git仓库,请移步《git多人协作用户权限配置》

QQ图片20220425234020.jpg

Git玩了好久了,但是一直都不怎么正经。


只是我自己用,所以就没有考虑多人使用权限的问题。


自己一个人在本地开发,测试完成之后,在传到git仓库中,然后在通过git更新到服务器的网站目录中,当然,这一路都是需要输入git密码的。


但是git这个密码呀,安全是安全,就是太麻烦了。有的时候着急,就直接从服务器上拽文件下来改。等有时间在提交git仓库。

 

这里大概重新梳理一下,linux服务器在搭建及配置git秘钥以及自动更新的全过程。

 

首先,git不同于svn,通常不需要建像svn那摩多的用户,基本上,大家共同使用一个用户,在各自的电脑上配置好公钥及私钥就可以了。


当然,如果你有需求需要多个用户协同管理git仓库,请移步《git多人协作用户权限配置

 

1:添加git用户


这里要使用命令adduser,而不是useradd。


关于useradd与adduser的区别,请移步《useradd与adduser命令的区别


Adduser git


root@iZuf60ynur81p6k0ysvtneZ:/# adduser fff
Adding user `fff' ...
Adding new group `fff' (1003) ...
Adding new user `fff' (1002) with group `fff' ...
Creating home directory `/home/fff' ...
Copying files from `/etc/skel' ...
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
Changing the user information for fff
Enter the new value, or press ENTER for the default
       Full Name []:
       Room Number []:
       Work Phone []:
       Home Phone []:
       Other []:
Is the information correct? [Y/n] y

 

2:安装git


安装git的命令,取决你在什么服务器。


Centos


Yum install git

 

Ubuntu


Apt-get install git

 

3:创建git仓库


(1):创建仓库命令


Git init –bare


(2):将git仓库的所有者修改成git用户


Chown -R fff:fff /git/test

 

3:修改sshd配置文件


(1):查看sshd状态(是否正在运行)


Systemctl status sshd


(2):编辑sshd配置文件


Vim /etc/ssh/sshd_config


增加如下内容:


# 是否允许用户自行使用成对的密钥系统进行登入行为,仅针对 version 2
RSAAuthentication yes
PubkeyAuthentication yes
# 自制的公钥数据放置于用户home目录下的 .ssh/authorized_keys 内
AuthorizedKeysFile     .ssh/authorized_keys
# 是否禁用使用密码登录
PasswordAuthentication yes
# 是否允许root用户
PermitRootLogin yes

 

(3):重启sshd


Systemctl restart sshd

 

4: 生成秘钥(执行命令一路回车)


(1):切换至fff用户(第一步中新添加的git用户),生成git用户在当前服务器上的ssh公钥及私钥


root@iZuf60ynur81p6k0ysvtneZ:/# su fff
fff@iZuf60ynur81p6k0ysvtneZ:/$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/fff/.ssh/id_rsa):
Created directory '/home/fff/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/fff/.ssh/id_rsa.
Your public key has been saved in /home/fff/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:u3YOiRa1hs8Od2JKNfv7Fi76mShfBtMIXvLFsneTDlk fff@iZuf60ynur81p6k0ysvtneZ
The key's randomart image is:
+---[RSA 2048]----+
|                 |
|         .       |
|      o + o E    |
|     . B B o .   |
|      + S = +    |
|       B O +..   |
|      = @ +...   |
|     o.*.Xooo    |
|      .+*=B=.    |
+----[SHA256]-----+


如下图所示:


QQ图片20220425234022.jpg

 

(2):切换至root用户,生成root用户在当前服务器中的ssh的公钥以及私钥。


fff@iZuf60ynur81p6k0ysvtneZ:/$ su root
Password:
root@iZuf60ynur81p6k0ysvtneZ:/# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
/root/.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 /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:4Ll1RePXqtnz/2qox3cZvedCA1TuWb2nu3fULy5KPc8 root@iZuf60ynur81p6k0ysvtneZ
The key's randomart image is:
+---[RSA 2048]----+
|            o..  |
|           o.o ..|
|      .    .o o +|
|     . o   ..o +.|
|      o S .  .+.+|
|       o . . +oo=|
|      .   ..=o+o=|
|         .  =+=**|
|          o+ =EOX|
+----[SHA256]-----+


QQ图片20220425234025.jpg


(3):windows系统生成秘钥


命令格式:


ssh-keygen -t rsa -C  '你的邮箱名'


打开cmd,输入以下命令:


C:Userscamellia>ssh-keygen -t rsa -C  '123456@qq.com'
Generating public/private rsa key pair.
Enter file in which to save the key (C:Userscamellia/.ssh/id_rsa):
C:Userscamellia/.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:Userscamellia/.ssh/id_rsa.
Your public key has been saved in C:Userscamellia/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:idjtfZ1svkxtBFJfayalsG7B5P80vLgNFepawLEvLpI '123456@qq.com'
The key's randomart image is:
+---[RSA 2048]----+
|           o  ...|
|          + o.o.o|
|           *.o.=.|
|     o o .o =.*..|
|    . o S  * o =.|
|       . .. +o=+o|
|        o ...**oo|
|       E ...+=+. |
|        . .o .+o |
+----[SHA256]-----+


QQ图片20220425234028.png

 

这里大概说一下,秘钥这个玩意,说白了就是登陆令牌,每台电脑都是不一样的,每台电脑的每个用户都是不一样的,就比如说,我上边的服务器中的git用户及root用户,他俩的秘钥就是不一样的。

 

5:为git用户配置公钥

说的明白点,就是我给git用户配置了那台电脑的那个用户的公钥,我就可以没有密码的更新和提交代码。当然,对应的电脑上边应该有私钥(放哪都可以,一般windows默认C:Users用户 .ssh,linux默认/home/用户/.ssh)


我们的公钥配置在,git用户家目录下的.ssh目录下的authorized_keys文件中,一行一个。


文件位置如下图所示:


QQ图片20220425234031.jpg

 

注意:authorized_keys 文件权限必须是0655

 

然后我们将刚刚第四步骤中生成的三个公钥,都填写到authorized_keys文件中。一个公钥一行,一共三行。

 

6:将git仓库克隆到服务器的web根目录


命令格式:


Git clone 你的git用户@你的服务器Ip:/git/test


例:


Git clone fff@47.100.219.44:/git/test


这个时候,你是不需要输入密码的,如果你的公钥已经配置完成

 

7:很重要的一步,将上一步中克隆的目录的所有者改成git用户:


命令格式:


chown -R 用户名:用户组 目录


例:


chown -R fff:fff /var/www/test

 

8:配置git服务器端自动更新


这个需要在git仓库目录下的hooks目录中添加一个脚本文件。每当git commit的时候触发执行脚本。


脚本存放位置,如下图红框标注所示:


QQ图片20220425234034.jpg

 

注意脚本文件的权限及所有者。否则可能因为权限的问题无法执行。

 

Post-update脚本文件内容:


#!/bin/sh
# 你的代码在服务器中的目录
DEPLOY_PATH=/var/www/test/
echo commit on `date +"%Y-%m-%d %H:%M:%S"` >> commit.log
unset GIT_DIR
cd $DEPLOY_PATH
git pull
echo "commit success"
exec git update-server-info

 

以上配置完成,大概就可以正常的提交以及更新代码了。当然,输不输密码要看你的配置,以及你自身的需求。毕竟,这个玩意,还是安全一点好。



目录
相关文章
|
3天前
|
缓存 资源调度 安全
深入探索Linux操作系统的心脏——内核配置与优化####
本文作为一篇技术性深度解析文章,旨在引领读者踏上一场揭秘Linux内核配置与优化的奇妙之旅。不同于传统的摘要概述,本文将以实战为导向,直接跳入核心内容,探讨如何通过精细调整内核参数来提升系统性能、增强安全性及实现资源高效利用。从基础概念到高级技巧,逐步揭示那些隐藏在命令行背后的强大功能,为系统管理员和高级用户打开一扇通往极致性能与定制化体验的大门。 --- ###
19 9
|
5天前
|
存储 安全 数据管理
如何在 Rocky Linux 8 上安装和配置 Elasticsearch
本文详细介绍了在 Rocky Linux 8 上安装和配置 Elasticsearch 的步骤,包括添加仓库、安装 Elasticsearch、配置文件修改、设置内存和文件描述符、启动和验证 Elasticsearch,以及常见问题的解决方法。通过这些步骤,你可以快速搭建起这个强大的分布式搜索和分析引擎。
12 5
|
6天前
|
Ubuntu Shell 开发工具
ubuntu/debian shell 脚本自动配置 gitea git 仓库
这是一个自动配置 Gitea Git 仓库的 Shell 脚本,支持 Ubuntu 20+ 和 Debian 12+ 系统。脚本会创建必要的目录、下载并安装 Gitea,创建 Gitea 用户和服务,确保 Gitea 在系统启动时自动运行。用户可以选择从官方或小绿叶技术博客下载安装包。
19 2
|
11天前
|
算法 网络安全 开发工具
[Git]关联远程库的两种方法及配置
本文介绍了 git 的四种连接方式:ssh 连接、HTTPS 连接、SVN 连接和 SVN + ssh 连接,重点讲解了 HTTPS 和 ssh 连接方式的配置及注意事项。文章详细解释了 HTTPS 连接的身份验证过程、常见问题及解决方案,以及 ssh 连接的公钥和私钥的创建、配置方法。此外,还介绍了如何在同一台电脑上连接多个 gitee 账号的方法。
42 0
[Git]关联远程库的两种方法及配置
|
19天前
|
Java Linux 网络安全
NIFI在Linux服务区上的部署配置过程是什么?
【10月更文挑战第21天】NIFI在Linux服务区上的部署配置过程是什么?
36 2
|
1月前
|
Ubuntu Linux 编译器
Linux/Ubuntu下使用VS Code配置C/C++项目环境调用OpenCV
通过以上步骤,您已经成功在Ubuntu系统下的VS Code中配置了C/C++项目环境,并能够调用OpenCV库进行开发。请确保每一步都按照您的系统实际情况进行适当调整。
254 3
|
1月前
|
监控 安全 网络协议
快速配置Linux云服务器
【10月更文挑战第3天】快速配置Linux云服务器
|
1月前
|
编译器 网络安全 开发工具
git学习五:切换本地仓库出现的问题。修改git配置初始化。error:src refspec master does not match any。错误总结,送上几个案例
这篇文章是关于Git使用中遇到的一些问题及其解决方案的总结,包括切换本地仓库时的问题、修改Git初始化配置、以及解决"error: src refspec master does not match any"错误等。
51 0
|
1月前
|
应用服务中间件 Linux Shell
Linux 配置 Nginx 服务的详细步骤,绝对干货
Linux 配置 Nginx 服务的详细步骤,绝对干货
70 0
|
1月前
|
Unix Linux Go
Linux 使用Yum安装Go和配置环境
Linux 使用Yum安装Go和配置环境