首頁 > 系統教程 > Linux > 主體

CentOS下搭建一個Git伺服器

王林
發布: 2024-04-15 19:13:01
轉載
879 人瀏覽過

CentOS下搭建一個Git伺服器

#1、首先需要安裝Git,可以使用yum來源線上安裝:
[root@localhost Desktop]# yum install -y git
登入後複製
2、建立一個git用戶,用來運行git服務
#
adduser git
登入後複製
3、初始化git倉庫:

這裡我們選擇/data/git/learngit.git來當我們的git倉庫

[root@localhost git]# git init --bare learngit.git
Initialized empty Git repository in /data/git/learngit.git/
登入後複製

執行以上命令,會創建一個裸倉庫,裸倉庫沒有工作區,因為伺服器上的Git倉庫純粹是為了共享,所以不讓用戶直接登入伺服器上去改工作區,並且伺服器上的Git倉庫通常都以.git結尾。然後,把owner改為git:

[root@localhost git]# chown git:git learngit.git
登入後複製
4、在這裡,Git伺服器就已經搭得差不多了。

下面我們在客戶端clone一下遠端倉庫

Zhu@XXX /E/testgit/8.34
$ git clone git@192.168.8.34:/data/git/learngit.git
Cloning into 'learngit'...
The authenticity of host '192.168.8.34 (192.168.8.34)' can't be established.
RSA key fingerprint is 2b:55:45:e7:4c:29:cc:05:33:78:03:bd:a8:cd:08:9d.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.8.34' (RSA) to the list of known hosts.
git@192.168.8.34's password:
登入後複製

這裡兩點要注意:第一,當你第一次使用Git的clone或push指令連接GitHub時,會得到一個警告:

The authenticity of host 'github.com (xx.xx.xx.xx)' can't be established.
RSA key fingerprint is xx.xx.xx.xx.xx.
Are you sure you want to continue connecting (yes/no)?
登入後複製

這是因為Git使用SSH連接,而SSH連接在第一次驗證GitHub伺服器的Key時,需要你確認GitHub的Key的指紋資訊是否真的來自GitHub的伺服器,輸入yes回車即可。 Git會輸出一個警告,告訴你已經把GitHub的Key加到本機的一個信任清單裡了:

Warning: Permanently added 'github.com' (RSA) to the list of known hosts.
登入後複製

這個警告只會出現一次,後面的動作就不會有任何警告了。如果你實在擔心有人冒充GitHub伺服器,輸入yes前可以對照GitHub的RSA Key的指紋資訊是否與SSH連線給的一致。第二,這裡提示你輸入密碼才能clone,當然如果你知道密碼,可以鍵入密碼來進行clone,但更常見的方式,是利用SSH的公鑰來完成驗證。

5、建立SSH Key 

先在使用者主目錄下,看看有沒有.ssh目錄,如果有,再看看這個目錄下有沒有id_rsa和id_rsa.pub這兩個文件,如果已經有了,可直接跳到下一步。

如果沒有,開啟Shell(Windows下開啟Git Bash),建立SSH Key:

$ ssh-keygen -t rsa -C "youremail@example.com"
登入後複製

你需要把郵件地址換成自己的郵件地址,然後一路回車,使用預設值即可,由於這個Key也不是用於軍事目的,所以也無需設定密碼。如果一切順利的話,可以在用戶主目錄裡找到.ssh目錄,裡面有id_rsa和id_rsa.pub兩個文件,這兩個就是SSH Key的秘鑰對,id_rsa是私鑰,不能洩露出去,id_rsa.pub是公鑰,可以放心地告訴任何人。

6.在Git伺服器開啟RSA認證

然後就可以去Git伺服器上加入你的公鑰用來驗證你的資訊了。

在Git伺服器上首先需要將/etc/ssh/sshd_config中將RSA認證打開,即:

1.RSAAuthentication yes
2.PubkeyAuthentication yes
3.AuthorizedKeysFile .ssh/authorized_keys
登入後複製

這裡我們可以看到公鑰存放在.ssh/authorized_keys檔案中。所以我們在/home/git下建立.ssh目錄,然後建立authorized_keys文件,並將剛產生的公鑰匯入進去。然後再clone的時候,或是之後push的時候,就不需要再輸入密碼了:

Zhu@XXX/E/testgit/8.34
$ git clone git@192.168.8.34:/data/git/learngit.git
Cloning into 'learngit'...
warning: You appear to have cloned an empty repository.
Checking connectivity... done.
登入後複製
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每次一登入就會自動登出。

以上是CentOS下搭建一個Git伺服器的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:linuxprobe.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!