在CentOS下搭建自己的Git伺服器

來源:互聯網
上載者:User

標籤:

首先需要裝好CentOS系統,作為測試,你可以選擇裝在虛擬機器上,這樣比較方便。這步預設你會,就不講了。

有了CentOS,那麼如何搭建Git伺服器呢?

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

[[email protected] Desktop]# yum install -y git

2、建立一個git使用者,用來運行git服務

[[email protected] Desktop]# adduser git

3、初始化git倉庫:這裡我們選擇/data/git/learngit.git來作為我們的git倉庫

[[email protected] git]# git init --bare learngit.gitInitialized empty Git repository in /data/git/learngit.git/

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

[[email protected] git]# chown git:git learngit.git

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

[email protected] /E/testgit/8.34$ git clone [email protected]:/data/git/learngit.gitCloning 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)? yesWarning: Permanently added '192.168.8.34' (RSA) to the list of known hosts.[email protected]'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 "[email protected]"

你需要把郵件地址換成你自己的郵件地址,然後一路斷行符號,使用預設值即可,由於這個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的時候,就不需要再輸入密碼了:

[email protected]/E/testgit/8.34$ git clone [email protected]:/data/git/learngit.gitCloning 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伺服器

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.