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
繁體地址,請注明出處:http://hk.pswp.cn/web/83026.shtml
英文地址,請注明出處:http://en.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 功能:專注于單節點容器化…