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

 

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



目录
相关文章
|
Ubuntu Linux 网络安全
Linux服务器之Ubuntu的安装与配置
Ubuntu Desktop是目前最成功、最流行的图形界面的Linux发行版;而Ubuntu Server也在服务器端市场占据了较大的份额。今天为大家详细介绍了Ubuntu Server的安装与配置,希望对你能有所帮助。关于VMware、VirtualBox等虚拟化软件的使用,朱哥还会在后续的文章中为大家详细介绍,敬请关注!
|
11月前
|
Shell Linux 网络安全
宝塔服务器面板部署安装git通过第三方应用安装收费怎么办—bash: git: command not found解决方案-优雅草卓伊凡
宝塔服务器面板部署安装git通过第三方应用安装收费怎么办—bash: git: command not found解决方案-优雅草卓伊凡
1637 3
宝塔服务器面板部署安装git通过第三方应用安装收费怎么办—bash: git: command not found解决方案-优雅草卓伊凡
|
11月前
|
存储 Linux 开发工具
Linux环境下使用Buildroot配置软件包
使用Buildroot可以大大简化嵌入式Linux系统的开发和维护工作,但它需要对Linux系统和交叉编译有深入的理解。通过上述步骤,可以有效地配置和定制软件包,为特定的嵌入式应用构建高效、稳定的系统。
1191 11
|
弹性计算 安全 Linux
阿里云服务器ECS安装宝塔Linux面板、安装网站(新手图文教程)
本教程详解如何在阿里云服务器上安装宝塔Linux面板,涵盖ECS服务器手动安装步骤,包括系统准备、远程连接、安装命令执行、端口开放及LNMP环境部署,手把手引导用户快速搭建网站环境。
|
Linux 网络安全 数据安全/隐私保护
使用Linux系统的mount命令挂载远程服务器的文件夹。
如此一来,你就完成了一次从你的Linux发车站到远程服务器文件夹的有趣旅行。在这个技术之旅中,你既探索了新地方,也学到了如何桥接不同系统之间的距离。
2249 21
|
Java Linux 网络安全
Linux云端服务器上部署Spring Boot应用的教程。
此流程涉及Linux命令行操作、系统服务管理及网络安全知识,需要管理员权限以进行配置和服务管理。务必在一个测试环境中验证所有步骤,确保一切配置正确无误后,再将应用部署到生产环境中。也可以使用如Ansible、Chef等配置管理工具来自动化部署过程,提升效率和可靠性。
1219 13
|
Kubernetes Linux 网络安全
Rocky Linux 8.9配置Kubernetes集群详解,适用于CentOS环境
初始化成功后,记录下显示的 `kubeadm join`命令。
935 0
|
监控 Linux 网络安全
FinalShell SSH工具下载,服务器管理,远程桌面加速软件,支持Windows,macOS,Linux
FinalShell是一款国人开发的多平台SSH客户端工具,支持Windows、Mac OS X和Linux系统。它提供一体化服务器管理功能,支持shell和sftp同屏显示,命令自动提示,操作便捷。软件还具备加速功能,提升访问服务器速度,适合普通用户和专业人士使用。
4069 0
|
存储 安全 Linux
Linux服务器上安装配置GitLab的步骤。
按照以上步骤,一个基础的GitLab服务应该运行并可以使用。记得定期检查GitLab官方文档,因为GitLab的安装和配置步骤可能随着新版本而变化。
1134 0
|
11月前
|
弹性计算 运维 安全
阿里云轻量应用服务器与云服务器ECS啥区别?新手帮助教程
阿里云轻量应用服务器适合个人开发者搭建博客、测试环境等低流量场景,操作简单、成本低;ECS适用于企业级高负载业务,功能强大、灵活可扩展。二者在性能、网络、镜像及运维管理上差异显著,用户应根据实际需求选择。
937 10