1. 程式人生 > >搭建Git伺服器遇到的那些坑

搭建Git伺服器遇到的那些坑

1、首先需要安裝Git,可以使用yum源線上安裝:
yum install -y git

2、接下來我們 建立一個git使用者組和使用者並新增密碼,用來執行git服務:
groupadd git
adduser git -g git
passwd git

2、建立證書登入
收集所有需要登入的使用者的公鑰,公鑰位於id_rsa.pub檔案中,把我們的公鑰匯入到/home/git/.ssh/authorized_keys檔案裡,一行一個。
如果沒有該檔案建立它:
cd /home/git/
mkdir .ssh
chmod 700 .ssh
touch .ssh/authorized_keys
chmod 600 .ssh/authorized_keys

注: .ssh 和.ssh/authorized_keys的許可權必須按照上面的設定,否則會認證失敗

3、初始化Git倉庫
首先我們選定一個目錄作為Git倉庫,假定是/home/git/front.git,在/home/git目錄下輸入命令:
cd /home/git
git init –bare front.git

以上命令Git建立一個空倉庫,伺服器上的Git倉庫通常都以.git結尾。然後,把倉庫所屬使用者改為git:
chown -R git:git front.git

4、在這裡,Git伺服器就已經搭得差不多了。下面我們在客戶端clone一下遠端倉庫

git clone [email protected]

:/home/git/front.git

鍵入密碼進行clone,但是更為常見的方式,是利用SSH的公鑰來完成驗證。

5、建立SSH Key
首先在使用者主目錄下,看看有沒有.ssh目錄,如果有,再看看這個目錄下有沒有id_rsa和id_rsa.pub這兩個檔案,如果已經有了,可直接跳到下一步。如果沒有,開啟Shell(Windows下開啟Git Bash),建立SSH Key:

這裡寫圖片描述

在Git Bash 執行命令
ssh-keygen -t rsa -C “[email protected]

你需要把郵件地址換成你自己的郵件地址,然後一路回車,使用預設值即可,由於這個Key也不是用於軍事目的,所以也無需設定密碼。

如果一切順利的話,可以在使用者主目錄裡找到.ssh目錄,裡面有id_rsa和id_rsa.pub兩個檔案,這兩個就是SSH Key的祕鑰對,id_rsa是私鑰,不能洩露出去,id_rsa.pub是公鑰,可以放心地告訴任何人。

將剛生成的id_rsa.pub公鑰匯入或者內容複製到 /home/git/.ssh/authorized_keys檔案裡面。

6、Git伺服器開啟RSA認證
然後就可以去Git伺服器上新增你的公鑰用來驗證你的資訊了。在Git伺服器上首先需要將/etc/ssh/sshd_config中將RSA認證開啟,即:
1.RSAAuthentication yes
2.PubkeyAuthentication yes
3.AuthorizedKeysFile .ssh/authorized_keys

vim /etc/ssh/sshd_config
將上面三個引數修改 然後重啟ssh服務
systemctl restart sshd

然後再次clone的時候,或者是之後push的時候,就不需要再輸入密碼了:

注:以上金鑰只適用於使用Git Bash進行命令管理git的,即clone,push等相關操作在Git Bash才不用輸入密碼,而如果你使用TortoiseGit 視覺化介面,仍然要你輸入密碼(我就一直卡在這裡,弄了很久才知道這個原因)

TortoiseGit 無需輸入密碼方法如下
開啟puttygen

這裡寫圖片描述

這裡寫圖片描述

點選save private key儲存putty的私鑰,putty的金鑰的字尾名是ppk。
把公鑰新增到.ssh/authorized_keys
注意:
公鑰在authorized_keys的檔案形式是一行一個公鑰,切記。否則該公鑰不起作用。

這裡寫圖片描述

在tortoisegit上使用金鑰

這裡寫圖片描述

然後就OK了 完全不需要密碼就可以使用git任何操作

這個過程有幾個坑:
一、是authorized_keys檔案中的內容,windows下存的檔案中拷過去會有問題(折行或者是前後的字串),總之要從介面考過去,否則ssh不認;
二、是.ssh目錄和authorized_keys檔案的許可權必須為0600,不能讓除本使用者之外其他任何使用者有寫許可權,否則sshd也不認 。

7、禁用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伺服器遇到的那些

1、首先需要安裝Git,可以使用yum源線上安裝: yum install -y git 2、接下來我們 建立一個git使用者組和使用者並新增密碼,用來執行git服務: groupadd git adduser git -g git passwd g

linux 使用gitblit搭建git伺服器

linux使用gitblit搭建git伺服器 安裝的過程不是很複雜,首先在官網下載gitblit的安裝包,下載版本為gitblit-1.8.0。 解壓檔案到當前路徑 tar -zxvf gitblit-1.8.0.tar.gz 配置在data下的defaults

Windows Server 2012 搭建FTP伺服器的一些(二)

    Windows Server 2012 搭建 IIS 的 FTP 伺服器被動模式連結失敗,出現 200 Type set to A. 227 Entering Passive Mode; 雲伺服器安全組已新增對應規則,伺服器防火牆已配置入站規則 20-21埠

Windows Server 2012 搭建FTP伺服器的一些(一)

    初衷就是想在雲伺服器上寫程式,為了使本機和雲伺服器之間傳檔案更方便,於是乎搭建FTP伺服器。總結折磨我兩天的一些坑,唉,欲哭無淚啊==     首先從一個已經搭建好的FTP伺服器上下載搭FTP伺服器必須的應用程式:FileZilla,WinRA

自定義Git ~ 忽略特殊檔案.gitignore、配置別名、搭建Git伺服器(十八)

在 安裝 Git 一節中,我們已經配置了使用者名稱 user.name 和 Email 地址 user.email,實際上,Git還有很多可配置項。比如,讓 Git 顯示顏色,會讓 輸出的命令 看起來更醒目,如下: 這樣,Git 會適當地顯示不同的顏色,比如 git status

Linux下搭建Git伺服器 Jenkins持續整合環境部署

1、安裝Git 見 Jenkins持續整合環境部署 第四節 2、建立Git使用者和使用者組 1 groupadd git 2 useradd git -g git 3、建立證書切換到git使用者建立證書 1 su git 2 cd /home/git 3 mkdir .ssh 4 c

使用gitblit搭建git伺服器

前言 一直在學習新技術,我想都整理到部落格上。公司還在堅持用svn,之前學過git都快要忘記了,此篇部落格記錄搭建基於gitblit的git伺服器。當然直接使用linux也可以,不過我不是很熟悉,考慮到我的主語言是Java,也就用gitblit搭建了一個。 環境 Windows server 2016

在 Linux 下搭建 Git 伺服器後如何新建專案和新增使用者

關於如何在Linux 下搭建 Git 伺服器的問題,大家可以參考這篇文章(https://www.cnblogs.com/dee0912/p/5815267.html)。 我按照上面文章內容操作,確實搭建完成Git伺服器後,但是又出現了一個問題,如何新建專案,並且把參與開發人員加到該專案呢?下面

關於阿里雲專有網路搭建FTP伺服器的深

之前用的FTP伺服器都是,隨便搭建一下就能用了, 昨天因為伺服器的問題,換了個伺服器,搭建FTP伺服器的時候發現, 搭建的伺服器居然只能使用 主動模式訪問,改成被動後 無法獲取目錄, 百度了 各大論壇,提交了 無數工單,都沒有解決!最後發現,居然是如此簡單,只因網路不一樣。 阿里

centos7搭建git伺服器(多使用者版)

建立倉庫並分享到組: git init --shared=group test 建立組: groupadd git 切換專案所屬組: chgrp -R git test 建立使用者1: useradd test1 -g git passwd test1 建立使用者2

cenos7 上搭建git伺服器

安裝git 在官網下載 tar.gz的包 然後放到 Linux(centos7系統)伺服器中 執行 tar -zxvf 檔名 來進行解壓檔案 然後 執行 git -version 來檢視git版本 正常出現版本號 繼續進行下一步 執行 useradd git 命令來建立 git使用者 然後 執行

centos7上搭建git伺服器

目錄 環境: 安裝git和建立使用者 建立證書登入 初始化git倉庫 踩得坑 tortisegit使用 環境: centos7,git 1.8.3,tortisegit 安裝git和建立使用者 注:$代表用root使用者登入 # 安裝Git $ y

搭建Git伺服器

Windows平臺下搭建Git伺服器 1、在自己電腦搭建Git伺服器,且只有自己的電腦能訪問。 即使是自己一個人在開發程式碼也強烈建議使用Git來管理程式碼。當然也可以只使用本地Git倉庫的形式來管理程式碼。 安裝Git:從這個網址下載,https://git-scm.com/downloads,

搭建git伺服器倉庫

1、安裝git $ yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-devel $ yum install git 2、建立git使用者組和使用者,專門用來執行g

搭建Git CentOS搭建Git伺服器及許可權管理

CentOS搭建Git伺服器及許可權管理   宣告:本教程,僅作為配置的記錄,細節不展開,需要您有一點linux的命令基礎,僅作為配置參考。 1. 系統環境 系統: Linux:CentOS 7.2 64位 由於CentOS已經內建了OpenSSH,如果您的

Java實現FTP上傳檔案到Linux伺服器那些

一、Linux安裝FTP服務         首先Linux伺服器需要安裝FTP服務,步驟如下: 1、執行如下ftp服務安裝命令: yum install vsftpd 可能會出現如下錯誤: "Couldn't open file /m

Git學習筆記<13> 搭建Git伺服器

搭建Git伺服器 準備一臺執行Linux的機器,強烈推薦用Ubuntu或Debian 擁有sudo許可權 第一步,安裝git: sudo apt-get install git 第二步,建立一個git使用者,用來執行git服務: sudo adduser git 第三步,建立

搭建git伺服器遠端倉庫_linux

搭建git伺服器遠端倉庫 安裝git軟體      yum install git 配置git的使用者資訊      git config --global  user.name "XXX

在Linux上搭建git伺服器

這裡我使用的是centos伺服器 1、安裝git yum -y install git 2、新新增使用者git adduser git 3、進入/etc/passwd將 git:x:1001:10

Git學習筆記11——配置Git搭建Git伺服器

忽略特殊檔案 有些時候,你必須把某些檔案放到Git工作目錄中,但又不能提交它們,比如儲存了資料庫密碼的配置檔案啦,等等,每次git status都會顯示Untracked files ...,有強迫症的童鞋心裡肯定不爽。 好在Git考慮到了大家的感受,這個問題解