Git仓库的创建

Git服务器准备

假设Git所在服务器为Ubuntu系统,IP地址10.17.1.5。

一. 准备运行git服务的git用户,这里用户名就直接设定为git。

1. 创建一个git用户组,并创建git用户。

sudo groupadd git

sudo useradd git -g git

2. 创建git用户目录,以及密钥认证文件。

sudo mkdir -p /home/git/.ssh

sudo touch /home/git/.ssh/authorized_keys

cd /home

sudo chown -R git:git git

3. 确保git用户的认证文件权限正确。

sudo chmod 700 /home/git/.ssh

sudo chmod 600 /home/git/.ssh/authorized_keys

4. 禁用git用户shell登录。

出于安全考虑,git用户不允许登录shell。

编辑/etc/passwd文件,找到类似下面的一行:

git:x:1001:1001:,,,:/home/git:/bin/bash

改为:

git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell

这样,git用户可以正常通过ssh使用git,但无法登录shell,为git用户指定的git-shell每次一登录就自动退出。

二. 安装git。

安装git:

sudo apt install git

三. 创建git仓库。

1. 先创建一个目录作为Git仓库。

Git仓库目录通常命名为*.git,假定是/data/git/demo.git。

创建目录:

mkdir -p /data/git/demo.git

将目录所有者改为git用户:

cd /data/git

sudo chown -R git:git demo.git

2. 初始化Git仓库。

cd /data/git

sudo git init --bare demo.git

四. 为使用Git服务的用户创建密钥。

1. 生成密钥文件。

假设为张三、李四两名开发者分别准备密钥。

使用ssh-keygen工具为张三创建密钥对:

ssh-keygen -t rsa

创建密钥的过程中,一路点击回车就可以了,不需要填任何东西。

生成的公钥和私钥文件默认存储在用户目录下的.ssh目录中。

例如linux系统中root用户执行ssh-keygen生成的密钥文件位于:

/root/.ssh

windows系统中dancen用户生成的密钥文件位于:

C:\Users\dancen\.ssh

其中,id_rsa.pub为公钥,id_rsa为私钥,这里重命名密钥文件为:

id_rsa_zhangsan.pub

id_rsa_zhangsan

再次使用ssh-keygen工具为李四创建密钥对:

ssh-keygen -t rsa

然后重命名密钥文件为:

id_rsa_lisi.pub

id_rsa_lisi

2. 添加公钥至Git服务器的git用户认证文件中。

把公钥添加到git服务器上git用户的认证文件/home/git/.ssh/authorized_keys。

依次把id_rsa_zhangsan.pub、id_rsa_lisi.pub的内容添加到authorized_keys中,authorized_keys内容如下:

# zhangsan

ssh-rsa ****** ad\zhangdan@gzy-20210126-02

# lisi

ssh-rsa ****** ad\zhangdan@gzy-20210126-02

3. 将私钥提供给使用Git服务的用户。

分别将id_rsa_zhangsan.pub、和id_rsa_lisi.pub提供给使用Git服务的zhangsan和lisi。

Git客户端准备

一. 在客户端部署Git私钥。

使用Git服务的用户需要将Git服务器管理员提供的私钥文件妥善存储。

以zhangsan为例,假设其使用windows系统,通常将私钥文件存储到用户目录下的.ssh目录:

C:\Users\zhangsan\.ssh

用户在使用git时默认匹配的私钥文件为:

C:\Users\zhangsan\.ssh\id_rsa

如果私钥文件没有部署在默认位置,或者没有使用默认名称id_rsa,则用户在使用git时需要临时指定私钥文件。

此时,为了避免每次都临时指定密钥文件,可通过客户端的配置文件config明确指定私钥文件和服务器的对应关系。

config文件位置:

C:\Users\zhangdan\.ssh\config

在config中添加如下内容:

Host 10.17.1.5

    HostName 10.17.1.5

    User git

    IdentityFile ~/.ssh/id_rsa_zhangsan

如此,当用户通过ssh连接10.17.1.5服务器时,将自动使用id_rsa_zhangsan作为私钥。如果存在多个ssh服务器和私钥映射关系,则在config中继续添加配置即可。

二. 克隆git仓库。

1. 安装git。

1. 配置git用户身份。

git config --global user.name "zhangsan"

git config --global user.email "zhangsan@ad.com"

解释

git config --global user.name "Your Name":这条命令设置全局的 Git 用户名,所有的 Git 提交都会使用这个名字。

git config --global user.email "email@example.com":这条命令设置全局的 Git 用户电子邮件地址,所有的 Git 提交都会使用这个电子邮件地址。

2. 克隆git仓库。

git clone git@10.17.1.5:/data/git/demo.git

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/web/83026.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

电脑提示dll文件缺失怎么办 dll修复方法

当你在使用某些应用程序或启动电脑时,看到提示“DLL文件缺失”的错误信息,这通常意味着某个必要的动态链接库(DLL)文件无法被找到或加载,导致软件无法正常运行。本文将详细介绍如何排查和修复DLL文件缺失的问题&#x…

使用 Rest-Assured 和 TestNG 进行购物车功能的 API 自动化测试

这段代码使用了 Rest-Assured 进行 API 测试,结合 TestNG 框架执行多个 HTTP 请求并进行断言验证。以下是对每个测试方法的详细解释,包括代码逻辑和测试目的。 1. test01() 方法 - 提取响应数据 Test public void test01() {String jsonData "{\&…

【设计模式-4.7】行为型——备忘录模式

说明:本文介绍行为型设计模式之一的备忘录模式 定义 备忘录模式(Memento Pattern)又叫作快照模式(Snapshot Pattern)或令牌模式(Token Pattern)指在不破坏封装的前提下,捕获一个对…

2025年渗透测试面试题总结-天融信[社招]渗透测试工程师(题目+回答)

安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 目录 天融信[社招]渗透测试工程师 一、Java Spring Boot组件漏洞 1. CVE-2018-1270(WebSocket RCE&…

华为OD机考-内存冷热标记-多条件排序

import java.util.*;public class DemoTest5 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextInt();int[] arr new int[a];for(int…

PPT转图片拼贴工具 v3.0

软件介绍 这个软件就是将PPT文件转换为图片并且拼接起来。 这个代码支持导入单个文件也支持导入文件夹 但是目前还没有解决可视化界面问题。 效果展示 软件源码 import os import re import win32com.client from PIL import Image from typing import List, Uniondef con…

NLP学习路线图(三十):微调策略

在自然语言处理领域,预训练语言模型(如BERT、GPT、T5)已成为基础设施。但如何让这些“通才”模型蜕变为特定任务的“专家”?微调策略正是关键所在。本文将深入剖析七种核心微调技术及其演进逻辑。 一、基础概念:为什么需要微调? 预训练模型在海量语料上学习了通用语言表…

讲述我的plc自学之路 第十三章

我和lora都是那种理想主义者,这是我们的共同之处。但是lora比我要更文艺一些,她读的书毕竟比我多,上的又是名校。受北大人文气息的熏陶,她总是对爱情充满了太多幻想。 “说说你的过往吧,lora。”我给lora倒了一杯啤酒&…

GPU虚拟化

引言 现有如下环境(注意相关配置:只有一个k8s节点,且该节点上只有一张GPU卡): // k8s版本 $ kubectl version Client Version: version.Info{Major:"1", Minor:"22", GitVersion:"v1.22.7&…

【免费数据】2005-2019年我国272个地级市的旅游竞争力多指标数据(33个指标)

旅游业是一个城市的重要产业构成。旅游竞争力是一个城市竞争力的重要构成部分。一个城市的旅游竞争力反映了其在旅游市场竞争中的比较优势。 今日我们分享的是2005-2019年我国272个地级市的旅游竞争力多指标数据!该数据集源自2025年4月发表于《地理学报》的论文成果…

AI智能驱动浏览器工具Browser Use详解

前言 在之前关于 AI 测试相关的几篇文章中,我们分别介绍了通过 playwright-mcp,以及 midscene.js、magentic ui 等几个不同的 AI 浏览器工具,实现 AI 驱动自动化测试的方法介绍。而其实在这些不断涌现的新工具出现之前,还有一个更早推出(2024.11),也同样还在不断完善的…

新成果:GaN基VCSEL动态物理模型开发

作为高速数据传输与光电信号处理的核心器件,垂直腔面发射激光器(VCSEL)在高速光通信、激光雷达等领域应用广泛,其动态特性直接关联器件调制速率及稳定性等关键参数。近期,天津赛米卡尔科技有限公司技术团队开发了GaN基…

嵌入式学习笔记 - freeRTOS xTaskResumeAll( )函数解析

第一部分 移除挂起等待列表中的任务 while( listLIST_IS_EMPTY( &xPendingReadyList ) pdFALSE )//循环寻找直到为空,把全部任务扫描一遍 { pxTCB ( TCB_t * ) listGET_OWNER_OF_HEAD_ENTRY( ( &xPendingR…

大数据+智能零售:数字化变革下的“智慧新零售”密码

大数据+智能零售:数字化变革下的“智慧新零售”密码 大家好,今天咱们聊聊一个火到不行的话题:大数据在智能零售中的应用。这个领域,不仅是技术的“硬核战场”,更是商业创新的风口浪尖。谁能玩转数据,谁就能掌控消费者心智,实现销售爆发。 咱们不搞枯燥学术,而是用最“…

react 常见的闭包陷阱深入解析

一、引子 先来看一段代码,你能说出这段代码的问题在哪吗? const [count, setCount] = useState(0); useEffect(() => {const timer = setTimeout(() => {setCount(count + 1);}, 1000);return () => clearTimeout(timer); }, []);正确答案: 这段代码存在闭包陷阱…

零基础在实践中学习网络安全-皮卡丘靶场(第十五期-URL重定向模块)

本期内容和之前的CSRF,File inclusion有联系,复习后可以更好了解 介绍 不安全的url跳转 不安全的url跳转问题可能发生在一切执行了url地址跳转的地方。如果后端采用了前端传进来的(可能是用户传参,或者之前预埋在前端页面的url地址)参数作为了跳转的目…

Python训练营---DAY48

DAY 48 随机函数与广播机制 知识点回顾: 随机张量的生成:torch.randn函数卷积和池化的计算公式(可以不掌握,会自动计算的)pytorch的广播机制:加法和乘法的广播机制 ps:numpy运算也有类似的广播机…

什么是ANSYS ACT? ACT又可以分为哪几类?

ANSYS作为目前仿真界主流软件之一,除了给用户提供其强大的功能之外,还给用户提供了高度自定义定制的权限。所谓定制,也即用户可以根据自己仿真需求修改现有功能并展示全新功能的产品内操作。定制的目标是改变现有的用户体验,以满足…

电路图识图基础知识-电动机正反转控制电路详解(二十)

1. 转换开关手动正反转控制电路 转换开关(QS)又称倒顺开关,是一种手动控制装置,可切换电动机的旋转方向。它具有三个工作位置:正向、停止和反向。 工作原理: 闭合总电源开关 QS若需正向运转,将…

Spring Boot微服务架构(十):Docker与K8S部署的区别

Spring Boot微服务在Docker与Kubernetes(K8S)中的部署存在显著差异,主要体现在技术定位、管理能力、扩展性及适用场景等方面。以下是两者的核心区别及实践对比: 一、技术定位与核心功能 Docker 功能:专注于单节点容器化…