1. 系統(tǒng)環(huán)境系統(tǒng): Linux:CentOS 7.x 64位建議以下操作都切換到root# 請確保您切換到了root賬戶$ su root$ yum install -y git# 驗證是否安裝成功$ git&...
系統(tǒng): Linux:CentOS 7.x 64位
建議以下操作都切換到root
# 請確保您切換到了root賬戶$ su root$ yum install -y git# 驗證是否安裝成功$ git --version# 輸出如下內(nèi)容表示成功:git version x.x.x.x
設(shè)置專門管理git的賬號非必須,但是建議這么操作。
# 添加git賬戶$ adduser git# 修改git的密碼$ passwd git# 然后兩次輸入git的密碼確認(rèn)后。# 查看git是否安裝成功$ cd /home && ls -al# 如果已經(jīng)有了git,那么表示成,參考如下:drwxr-xr-x. 5 root root 4096 Apr 4 15:03 .dr-xr-xr-x. 19 root root 4096 Apr 4 15:05 ..drwx------ 10 git git 4096 Apr 4 00:26 git# 默認(rèn)還給我們分配一個名字叫g(shù)it的組。
git倉庫的權(quán)限管理,我們可以手動進(jìn)行管理和配置,也可以通過其他輔助工具。如果小團(tuán)隊的話,直接通過ssh公鑰進(jìn)行管理即可,如果大點的團(tuán)隊,最好用gitolite 或者 gitosis,兩者都差不多,一個是Perl開發(fā),一個是Python開發(fā)。
以下我分別介紹手動管理權(quán)限和使用gitolite
管理的方式,注意兩者不兼容,不能混用。
經(jīng)過以上步驟,其實服務(wù)器的基本已經(jīng)配置好,但是需要設(shè)置權(quán)限和配置遠(yuǎn)程訪問git倉庫的方式。我們只介紹ssh的方式,https不做介紹。
切換到git賬號,并創(chuàng)建ssh的默認(rèn)目錄和校驗公鑰的配置文件
# 1.切換到git賬號$ su git# 2.進(jìn)入 git賬戶的主目錄$ cd /home/git# 3.創(chuàng)建.ssh的配置,如果此文件夾已經(jīng)存在請忽略此步。$ mkdir .ssh# 4. 進(jìn)入剛創(chuàng)建的.ssh目錄并創(chuàng)建authorized_keys文件,此文件存放客戶端遠(yuǎn)程訪問的 ssh的公鑰。$ cd /home/git/.ssh$ touch authorized_keys# 5. 設(shè)置權(quán)限,此步驟不能省略,而且權(quán)限值也不要改,不然會報錯。$ chmod 700 /home/git/.ssh/$ chmod 600 /home/git/.ssh/authorized_keys
此時,服務(wù)端的配置基本完成。接下需要把客戶端的公鑰拷貝到authorized_keys
文件中。
以下是客戶端創(chuàng)建ssh私鑰和拷貝的過程,如果您有私鑰越過創(chuàng)建私鑰的過程。
請用您的客戶端進(jìn)入終端(如果只有一臺電腦,可以用不同的賬號模擬不同客戶端)
第一步: 創(chuàng)建客戶端的ssh私鑰和公鑰
檢查是否已經(jīng)擁有ssh公鑰和私鑰:進(jìn)入用戶的主目錄。
用戶主目錄:
Windows系統(tǒng):C:\Users\用戶名
Linux系統(tǒng):/home/用戶名
Mac系統(tǒng):/Users/用戶名
然后查看是否有.ssh
文件夾,此文件夾下是否有如下幾個文件。
# 用戶主目錄的.ssh文件夾下.ssh├── id_rsa└── id_rsa.pub # 我們要用的私鑰
如果沒有,那么用ssh-keygen創(chuàng)建ssh的私鑰。
$ ssh-keygen -t rsa# 接下來,三個回車默認(rèn)即可。
創(chuàng)建私鑰成功后,在查看用戶目錄是否有意加有了公鑰文件id_rsa.pub
第二步: 拷貝私鑰到git的服務(wù)器
如何把客戶端的文件拷貝到服務(wù)器端,我建議用scp
命令進(jìn)行拷貝。
以下以mac系統(tǒng)為例:
# 首先進(jìn)入我的用戶主目錄的.ssh目錄下,注意用戶名xxx替換成自己的$ cd /Users/xxx/.ssh# 以下命令是:把本地的id_rsa.pub文件拷貝到 aicoder.com服務(wù)器,登錄aicoder.com服務(wù)的賬號是git。# 冒號后面默認(rèn)就是git賬號的主目錄,最后文件被保存成laoma.pub# 注意:把域名換成你自己的或者ip,最后的文件名可以自己定,后面還有用。$ scp ./id_rsa.pub git@aicoder.com:.ssh/laoma.pub
切換到服務(wù)器端,把剛才上傳的laoma.pub文件的內(nèi)容添加到 authorized_keys中,就可以允許客戶端ssh訪問了。
# 切換到git賬戶$ su git$ cd /home/git/.ssh$ ls -al# 查看一下.ssh目錄是否有authorized_keys和laoma.pub文件# .# |-- authorized_keys# `-- laoma.pub# 如果有,那么進(jìn)行下面的把laoma.pub文件中的內(nèi)容添加到authorized_keys中.$ cat laoma.pub >> authorized_keys# >> 是在文件后面追加的意思,主要如果用其他編輯器,每個ssh的pub要單獨一行,建議用cat命令方便簡單。
到此為止,您配置的客戶端應(yīng)該可以ssh的方式直接用git賬號登錄服務(wù)器。(當(dāng)然不安全,后面可以控制)
# 在客戶端用ssh測試連接遠(yuǎn)程服務(wù)器,請將域名aicoder.com換成你的ip地址或者域名$ ssh git@aicoder.com# 第一次連接有警告,輸入yes繼續(xù)即可。如果可以連接上,那么恭喜你的ssh配置已經(jīng)可以了。
進(jìn)入服務(wù)器的終端。
# 切換到git賬號$ su git# 進(jìn)入git賬號的用戶主目錄。$ cd /home/git# 在用戶主目錄下創(chuàng)建 test.git倉庫的文件夾$ mkdir test.git && cd test.git# 在test.git目錄下初始化git倉庫$ git init --bare# 輸出如下內(nèi)容,表示成功Initialized empty Git repository in /home/git/test.git/
git init --bare 是在當(dāng)前目錄創(chuàng)建一個裸倉庫,也就是說沒有工作區(qū)的文件,直接把git倉庫隱藏的文件放在當(dāng)前目錄下,此目錄僅用于存儲倉庫的歷史版本等數(shù)據(jù)。
此時,客戶端就可以進(jìn)行clone或者remote add此倉庫了。
客戶端,可以新建一個文件夾,初始化一個倉庫,然后跟遠(yuǎn)程服務(wù)器上的空倉庫建立連接。
# 以下shell代碼,純手寫沒有驗證,如果有錯誤請自行糾正。$ mkdir demos && cd demos$ git init$ touch a.txt$ echo 'aicoder.com' >> a.txt$ git add .$ git commit -m 'the first commit'# 把當(dāng)前倉庫跟遠(yuǎn)程倉庫添映射$ git remote add origin git@aicoder.com:test.git# 把當(dāng)前倉庫push到遠(yuǎn)程倉庫。$ git push -u origin master
到此為止,我們就可以盡情的享用git私服了,但是!但是!但是!客戶端可以直接ssh登錄啊,這是bug,也是不安全的隱患,且看下面怎么禁用git賬號的shell登錄。
因為前面我們添加了客戶端的ssh的公鑰到遠(yuǎn)程服務(wù)器,所以客戶端可以直接通過shell遠(yuǎn)程登錄服務(wù)器,這不安全,也不是我們想要的。且看下面如何禁用shell登錄:
第一步:
給 /home/git
下面創(chuàng)建git-shell-commands
目錄,并把目錄的擁有者設(shè)置為git賬戶。可以直接用git賬號登錄服務(wù)器終端操作。
$ su git$ mkdir /home/git/git-shell-commands
此文件夾是git-shell用到的目錄,需要我們手動創(chuàng)建,不然報錯:fatal: Interactive git shell is not enabled. hint: ~/git-shell-commands should exist and have read and execute access.
第二步:修改/etc/passwd
文件,修改
$ vim /etc/passwd# 可以通過 vim的正則搜索快速定位到這行, 命名模式下 :/git:x# 找到這句, 注意1000可能是別的數(shù)字git:x:1000:1000::/home/git:/bin/bash# 改為:git:x:1000:1000::/home/git:/bin/git-shell# 最好不要直接改,可以先復(fù)制一行,然后注釋掉一行,修改一行,保留原始的,這就是經(jīng)驗!!!# vim快捷鍵: 命令模式下:yy復(fù)制行, p 粘貼 0光標(biāo)到行首 $到行尾 x刪除一個字符 i進(jìn)入插入模式 # 修改完后退出保存: esc進(jìn)入命令模式, 輸入::wq! 保存退出。
好了,此時我們就不用擔(dān)心客戶端通過shell登錄,只允許使用git-shell進(jìn)行管理git的倉庫。
如果有其他小伙伴要連接git服務(wù)器,僅需要把他的公鑰也添加到authorized_keys即可。
如果團(tuán)隊大點的,我們可以用gitolite
管理,而且使用很方便。
以下配置此承接第5,如果第6步您已經(jīng)操作,請注意第二步的說明。
第一步:添加gitolite
依賴的perl
的包
$ yum install 'perl(Data::Dumper)'
第二步:清空服務(wù)器端配置的ssh的公鑰
確保:~/.ssh/authorized_keys
文件是空的,或者不存在。如果已經(jīng)存在,建議你把他改名即可,比如:authorized_keys.bak
第三步:上傳管理員的客戶端的ssh公鑰到服務(wù)器
把你管理員電腦的ssh的id_rsa.pub
文件拷貝到服務(wù)器的: $HOME/YourName.pub
YourName可以自定義,最好根據(jù)不同伙伴的名字命名。
參考:
# mac客戶端$ scp /Users/fly/.ssh/id_rsa.pub git@aicoder.com:malun.pub
第四步:安裝配置gitolite
用git賬號登錄,并執(zhí)行如下命令。
# 切換到git賬號$ su git# 進(jìn)入git主目錄$ cd /home/git# 下載gitolite的倉庫$ git clone https://github.com/sitaramc/gitolite# 創(chuàng)建bin文件夾,必須!!!$ mkdir -p $HOME/bin# 用下載下來的倉庫中的insall執(zhí)行安裝操作,指向的目錄就是上一命令行創(chuàng)建的目錄$ ./gitolite二進(jìn)制/install -to $HOME/bin# 把上傳到服務(wù)器的 管理員的公鑰setup到gitolite中,注意:YourName.pub改成你自己的文件名。$ ~/bin/gitolite setup -pk ~/YourName.pub# 此時安裝配完成后,查看git主目錄$ ls /home/gitdrwxr-xr-x 7 git git 4096 Apr 3 23:50 bin # 我們創(chuàng)建的存放gitolite二進(jìn)制drwxrwxr-x 6 git git 4096 Apr 3 23:40 gitolitedrwx------ 6 git git 4096 Apr 3 23:52 .gitolite-rw------- 1 git git 7130 Apr 3 23:52 .gitolite.rc-rw------- 1 git git 398 Apr 3 23:39 malun.pub # 管理員的公鑰drwxrw---- 3 git git 4096 Apr 3 23:40 .pki-rw------- 1 git git 19 Apr 4 00:26 projects.list # 倉庫列表(gitolite自動創(chuàng)建)drwx------ 5 git git 4096 Apr 4 00:26 repositories # 存放所有倉庫文件夾drwx------ 2 git git 4096 Apr 4 15:50 .ssh# repositories目錄下已經(jīng)有了兩個git倉庫了。# .# |-- gitolite-admin.git # 管理配置權(quán)限的倉庫# `-- testing.git # 測試倉庫
好了,到此位置,管理員就可以直接把默認(rèn)的遠(yuǎn)程管理的倉庫gitolite-admin直接clone到本地進(jìn)行管理git服務(wù)了。
第五步:管理員在本地管理和配置服務(wù)器端的倉庫
下載服務(wù)器端的遠(yuǎn)程管理倉庫
# 下載遠(yuǎn)程管理倉庫, 請把aicoder.com換成你自己服務(wù)器的域名或者ip$ git clone git@aicoder.com:gitolite-admin$ cd gitolite-admin# 目錄結(jié)構(gòu)如下:# .# ├── conf # 配置文件夾# │ └── gitolite.conf # 配置權(quán)限的文件# └── keydir # 客戶端的公鑰文件夾,所有伙伴的公鑰要放到此目錄下# └── malun.pub
添加其他開發(fā)的小伙伴
把小伙伴的公鑰發(fā)給管理員。管理員添加到gitolite-admin
倉庫的keydir
目錄下,注意文件名字格式為username.pub
,username就是配置權(quán)限時的用戶名。
配置用戶對倉庫的讀寫權(quán)限
直接修改conf文件夾下的,gitolite.conf文件。簡單解釋下幾個用法:
參考:
repo
代表倉庫的意思,如果新添加一個repo,代表服務(wù)端新建一個空倉庫,倉庫push到服務(wù)端后會自動創(chuàng)建。
RW
代表可讀可寫
@all
代表所有人。
master
和 dev
代表分支
@admin = malun
@om = malun bcd
repo gitolite-admin
RW+ = malun
repo testing
RW+ = @all
repo om
RW+ = @admin
RW+ master = @admin
RW+ dev = @om
應(yīng)用修改到服務(wù)器端
做好配置后,由管理員把修改push到服務(wù)器端,會自動處理。
$ git add conf$ git add keydir$ git commit -m "added foo, gave access to alice, bob, carol"$ git push
此時登錄服務(wù)端,查看/home/git/repositories/
目錄下是否增加了對應(yīng)的倉庫了呢?
其實配置這些并不繁瑣,但是需要你有一定的linux的經(jīng)驗,當(dāng)然你也可以選擇使用GitLab
或者Github
。
最后希望能幫到你。
來源:https://blog.csdn.net/hearbeat/article/details/121208147
來源:本文內(nèi)容搜集或轉(zhuǎn)自各大網(wǎng)絡(luò)平臺,并已注明來源、出處,如果轉(zhuǎn)載侵犯您的版權(quán)或非授權(quán)發(fā)布,請聯(lián)系小編,我們會及時審核處理。
聲明:江蘇教育黃頁對文中觀點保持中立,對所包含內(nèi)容的準(zhǔn)確性、可靠性或者完整性不提供任何明示或暗示的保證,不對文章觀點負(fù)責(zé),僅作分享之用,文章版權(quán)及插圖屬于原作者。
Copyright?2013-2024 JSedu114 All Rights Reserved. 江蘇教育信息綜合發(fā)布查詢平臺保留所有權(quán)利
蘇公網(wǎng)安備32010402000125
蘇ICP備14051488號-3技術(shù)支持:南京博盛藍(lán)睿網(wǎng)絡(luò)科技有限公司
南京思必達(dá)教育科技有限公司版權(quán)所有 百度統(tǒng)計