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

 

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



目录
相关文章
|
6天前
|
存储 弹性计算 人工智能
2025年阿里云企业云服务器ECS选购与配置全攻略
本文介绍了阿里云服务器的核心配置选择方法论,涵盖算力需求分析、网络与存储设计、地域部署策略三大维度。针对不同业务场景,如初创企业官网和AI模型训练平台,提供了具体配置方案。同时,详细讲解了购买操作指南及长期运维优化建议,帮助用户快速实现业务上云并确保高效运行。访问阿里云官方资源聚合平台可获取更多最新产品动态和技术支持。
|
27天前
|
存储 开发工具 git
[Git] 深入理解 Git 的客户端与服务器角色
Git 的核心设计理念是分布式,每个仓库既可以是客户端也可以是服务器。通过 GitHub 远程仓库和本地仓库的协作,Git 实现了高效的版本管理和代码协作。GitHub 作为远程裸仓库,存储项目的完整版本历史并支持多客户端协作;本地仓库则通过 `.git` 文件夹独立管理版本历史,可在离线状态下进行提交、回滚等操作,并通过 `git pull` 和 `git push` 与远程仓库同步。这种分布式特性使得 Git 在代码协作中具备强大的灵活性和可靠性。
51 18
[Git] 深入理解 Git 的客户端与服务器角色
|
4天前
|
存储 人工智能 缓存
怎么根据自己的业务选择阿里云服务器配置大小?
本文指导如何根据业务需求精准选择阿里云服务器配置,涵盖个人轻量级至企业级、计算密集型等场景,推荐不同实例类型、存储与带宽方案,并提供成本优化策略,如包年包月节省成本、按需升级配置及选用性价比高的自研ARM架构实例。帮助用户在数字化转型中实现性能与成本的平衡。 注:以上配置与价格基于阿里云2025年官方数据,实际信息可能有所调整,请以官网实时页面为准。
|
4天前
|
人工智能 运维 监控
2025年阿里云服务器配置选择全攻略:CPU、内存、带宽与系统盘详解
在2025年,阿里云服务器以高性能、灵活扩展和稳定服务助力数字化转型,提供轻量应用服务器、通用型g8i实例等多样化配置,满足个人博客至企业级业务需求。针对不同场景(如计算密集型、内存密集型),推荐相应实例类型与带宽规划,强调成本优化策略,包括包年包月节省成本、ESSD云盘选择及地域部署建议。文中还提及安全设置、监控备份的重要性,并指出未来可关注第九代实例g9i支持的新技术。整体而言,阿里云致力于帮助用户实现性能与成本的最优平衡。 以上简介共计238个字符。
|
4天前
|
存储 人工智能 监控
新手小白购买阿里云服务器省钱策略、配置选型与注意事项
针对初次使用阿里云服务器的用户,本文提供系统化的指导方案以优化成本并满足业务需求。首先介绍配置选型,包括实例类型(通用型、计算型、内存型)与基础配置建议;其次阐述省钱策略,如企业认证、合理选择计费模式及批量购买;最后提醒注意事项,涵盖带宽存储规划、地域网络优化及安全管理。新手可通过明确需求、选择配置、优化购买和持续监控四步快速上手,实现高效稳定的云端部署。 注:推荐配置基于2025年阿里云产品体系,具体信息请参考官网。
|
7天前
|
存储 人工智能 并行计算
2025年阿里云弹性裸金属服务器架构解析与资源配置方案
🚀 核心特性与技术创新:提供100%物理机性能输出,支持NVIDIA A100/V100 GPU直通,无虚拟化层损耗。网络与存储优化,400万PPS吞吐量,ESSD云盘IOPS达100万,RDMA延迟<5μs。全球部署覆盖华北、华东、华南及海外节点,支持跨地域负载均衡。典型应用场景包括AI训练、科学计算等,支持分布式训练和并行计算框架。弹性裸金属服务器+OSS存储+高速网络综合部署,满足高性能计算需求。
|
28天前
|
网络安全 Apache 开发工具
图解Git——服务器上的Git《Pro Git》
Git 远程仓库及通信协议简介:远程仓库为团队协作提供平台,支持共享代码。常见形式为裸仓库,仅保存 Git 元数据。Git 支持多种协议,包括本地协议(适合局域网)、HTTP/HTTPS(推荐智能 HTTP,安全易用)、SSH(企业内部协作首选)和 Git 协议(高效只读访问)。选择协议需根据协作需求、安全性和配置难度权衡。此外,搭建 Git 服务器涉及创建裸仓库、上传至服务器、初始化共享仓库等步骤。生成 SSH 公钥、配置服务器及使用 GitWeb 或 GitLab 等工具可进一步增强功能。第三方托管服务如 GitHub 提供便捷的托管选项,适合快速启动和开源项目。总结而言,自行运行服务器提
38 11
|
30天前
|
前端开发 Java 开发工具
Git使用教程-将idea本地Java等文件配置到gitte上【保姆级教程】
本内容详细介绍了使用Git进行版本控制的全过程,涵盖从本地仓库创建到远程仓库配置,以及最终推送代码至远程仓库的步骤。
39 0
|
2月前
|
存储 弹性计算 安全
阿里云服务器配置选择策略参考及后期使用注意事项
对于初次购买阿里云服务器的一些新手用户来说,在云服务器配置选择和后期使用过程中有一些不清楚的地方,小编分享几点阿里云服务器配置选择策略,以及后期使用注意事项,购买过程中注意好下面这些事项,能让我们选对选好阿里云服务器,购买之后,在使用过程中,注意下面这些事项,能够让我们更好、更安全的使用阿里云服务器。下面是小编分享的一份详尽的阿里云服务器配置与使用指南,以供参考和借鉴。
|
2月前
|
移动开发 jenkins 持续交付
jenkins配置git
通过上述步骤,您可以在 Jenkins 中成功配置 Git,从而实现自动拉取代码并进行构建和部署。这些配置不仅提高了开发效率,还保证了代码的连续集成和交付。确保每一步配置正确,以避免在实际使用中遇到问题。
129 1