搭建免密SSH訪問的私有Git服務(wù)器

Git服務(wù)器可以很輕松的搭建在運(yùn)行Linux的機(jī)器上,可以選擇Ubuntu、Debian或者CentOS。同時(shí)可以在服務(wù)器設(shè)置開發(fā)人員的SSH公鑰來實(shí)現(xiàn)免密訪問。

本文使用CentOS 7來作為Git服務(wù)器。

1. 安裝Git

在電腦上打開Git bash,運(yùn)行ssh root@<your git server IP>命令,以root身份ssh登錄Git服務(wù)器,提示登錄密碼時(shí)輸入root用戶的密碼:

$ ssh root@10.0.0.50
...
Last login: ...
[root@localhost ~]#

登陸成功后,運(yùn)行yum install git命令安裝Git:

[root@localhost ~]# yum install git

安裝后運(yùn)行git --version命令驗(yàn)證下:

[root@localhost ~]# git --version
git version 1.8.3.1

安裝成功了。接下來運(yùn)行adduser git命令為Git服務(wù)創(chuàng)建一個(gè)新的用戶:

[root@localhost ~]# adduser git

2. 禁用Git服務(wù)器上git用戶的shell權(quán)限

出于安全考慮,要禁用服務(wù)器上git用戶的shell訪問權(quán)限。繼續(xù)執(zhí)行vi命令設(shè)置shell權(quán)限:

[root@localhost ~]# vi /etc/passwd

vi編輯器打開passwd文件后,按INSERT鍵進(jìn)入編輯狀態(tài),將git:x:1001:1001::/home/git:/bin/bash,修改成git:x:1001:1001::/home/git:/usr/bin/git-shell。修改后鍵入:x回車保存并退出vi編輯器,。

3. 創(chuàng)建Git倉庫

運(yùn)行mkdir命令在Git服務(wù)器上新建Git倉庫目錄:

[root@localhost ~]# mkdir -p /gitrepo/theoneprj.git

目錄創(chuàng)建成功,再運(yùn)行git init --bare命令創(chuàng)建一個(gè)裸庫,亦即沒有工作目錄的Git倉庫:

[root@localhost /]# git init --bare /gitrepo/theoneprj.git
Initialized empty Git repository in /gitrepo/theoneprj.git/

接下來運(yùn)行chown -R命令,將Git倉庫目錄的權(quán)限授權(quán)給git用戶:

[root@localhost /]# chown -R git:git /gitrepo/theoneprj.git

到這里Git倉庫就創(chuàng)建完成了。運(yùn)行exit命令退出root shell:

[root@localhost ~]# exit
logout
Connection to 10.0.0.50 closed.

4. Git用戶訪問授權(quán)

Git通過SSH協(xié)議在網(wǎng)絡(luò)上傳輸數(shù)據(jù)。接下來要做的是為每個(gè)開發(fā)人員在自己的開發(fā)電腦上生成一對(duì)SSH密鑰(private key & public key),然后將自己的公鑰(public key)上傳到Git服務(wù)器。以后開發(fā)人員使用git命令和服務(wù)器交互時(shí)就可以免密直接訪問了。

4.1. 為開發(fā)成員生成SSH密鑰對(duì)

在Git bash中執(zhí)行命令ssh-keygen -t RSA -C "<developer's email>",命令運(yùn)行時(shí)會(huì)要求指定保存密鑰對(duì)的文件、以及用于保護(hù)私鑰的密碼。連續(xù)回車--均采用默認(rèn)設(shè)置生成密鑰對(duì)。密鑰對(duì)文件默認(rèn)保存在C:\Users<當(dāng)前Windows登錄用戶>.ssh文件夾內(nèi)。

$ ssh-keygen -t RSA -C "efreykong@outlook.com" -f ~/.ssh/id_rsa -P ''
Generating public/private RSA key pair.
Your identification has been saved in id_rsa.
Your public key has been saved in id_rsa.pub.
The key fingerprint is:
SHA256:CWfkVa7vHUj1mQmSW23QmFbo7gcznfr+TJzPrD9RKw0 efreykong@outlook.com
The key's randomart image is:
+---[RSA 2048]----+
(此處省略)
+----[SHA256]-----+

4.2. 將開發(fā)任意的公鑰上傳到Git服務(wù)器

運(yùn)行下列命令:

$ ssh root@10.0.0.50  'mkdir -p /home/git/.ssh && cat >> /home/git/.ssh/authorized_keys' < ~/.ssh/id_rsa.pub

如果提示需要密碼則輸入root用戶的密碼即可。

命令執(zhí)行完成后,測(cè)試一下SSH免密登錄是否成功:

$ ssh git@10.0.0.50
Last login: ...
fatal: Interactive git shell is not enabled.
hint: ~/git-shell-commands should exist and have read and execute access.
Connection to 10.0.0.50 closed.

從命令的返回信息可以看到可以登錄了,說明使用git命令時(shí)SSH免密登錄設(shè)置成功(由于禁用了服務(wù)器git用戶賬號(hào)的shell權(quán)限,所以連接被自動(dòng)關(guān)閉了,這是正?,F(xiàn)象)。

到這里私有的Git服務(wù)器就搭建好了,現(xiàn)在開發(fā)人員在自己的電腦上可以通過git clone git@10.0.0.50/gitrepo/theoneprj.git從服務(wù)器克隆Git倉庫到本地了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容