搭建Git服務(wù)器需要準(zhǔn)備一臺(tái)運(yùn)行Linux的機(jī)器掀亩,我這里使用一個(gè)centos的Docker容器作為示例厉颤,話不多說(shuō)美旧,上步驟鼎文;
Docker虛擬機(jī)準(zhǔn)備
使用現(xiàn)成服務(wù)器的同學(xué)跳過(guò)此步驟
下載最新的centos鏡像(現(xiàn)在最新版本是8.3)并運(yùn)行渔肩,命令如下:
docker pull centos
docker run --name gitserver -itd --privileged=true -p 8000:22 centos /sbin/init
docker exec -it gitserver /bin/bash
注意,這邊我將本機(jī)的8000端口映射到服務(wù)器的22端口拇惋,作為后續(xù)的遠(yuǎn)程倉(cāng)庫(kù)訪問(wèn)端口
安裝Git
(如果因?yàn)橄到y(tǒng)權(quán)限的問(wèn)題無(wú)法執(zhí)行安裝命令, 可在命令前添加sudo提權(quán))
yum install -y git
yum install -y passwd
yum install -y cracklib-dicts
// 容器默認(rèn)都沒(méi)有安裝sshd服務(wù), 使用非容器的同學(xué)注意區(qū)別;
yum install -y openssh-server
添加git用戶
為了服務(wù)器訪問(wèn)安全及Git服務(wù)的遠(yuǎn)程訪問(wèn)需要, 系統(tǒng)上需要?jiǎng)?chuàng)建一個(gè)git用戶
adduser git
更改密碼
passwd git
連續(xù)兩次輸入密碼后按回車
啟動(dòng)ssh服務(wù)
對(duì)于使用非容器服務(wù)器的同學(xué)周偎,已經(jīng)啟用sshd服務(wù)的不在執(zhí)行此步驟
生成sshd所需的秘鑰文件并后臺(tái)啟動(dòng)sshd服務(wù)抹剩,操作命令:
ssh-keygen -t dsa -f /etc/ssh/ssh_host_ecdsa_key
ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key
/usr/sbin/sshd -D &
切換為git用戶
su - git
注意'-'兩邊都有空格
為什么這邊切換為git用戶? 因?yàn)楹罄m(xù)幾個(gè)步驟需要有創(chuàng)建文件夾/文件的動(dòng)作, 如果使用root用戶將可能導(dǎo)致git用戶無(wú)權(quán)訪問(wèn)(也可免去root用戶操作后更換文件權(quán)限的步驟);
添加git的遠(yuǎn)程公鑰
收集所有需要登錄git的用戶的公鑰,就是他們自己的id_rsa.pub文件蓉坎,把所有公鑰導(dǎo)入到/home/git/.ssh/authorized_keys文件里澳眷,一行一個(gè)。
mkdir .ssh
echo "********公鑰文件中的所有內(nèi)容********">~/.ssh/authorized_keys
Windows電腦公鑰文件路徑一般是C:\Users\Administrator\.ssh目錄下
Linuex電腦則在~/.ssh路徑下
如果你本機(jī)沒(méi)有找到id_rsa.pub文件則可以使用命令生成一個(gè)
ssh-keygen -o
首先 ssh-keygen 會(huì)確認(rèn)密鑰的存儲(chǔ)位置(默認(rèn)是 .ssh/id_rsa)蛉艾,然后它會(huì)要求你輸入兩次密鑰口令钳踊。 如果你不想在使用密鑰時(shí)輸入口令,將其留空即可勿侯。
Windows電腦需要先安裝git軟件并運(yùn)行Git Bash后執(zhí)行此命令拓瞪。
創(chuàng)建git裸倉(cāng)庫(kù)
git init --bare example.git
克隆遠(yuǎn)程倉(cāng)庫(kù)到本地
因?yàn)槲胰萜鞅┞兜亩丝谑?000,所以連接如下:
克隆成功
Cloning into 'example'...
warning: You appear to have cloned an empty repository.
服務(wù)器正在使用基于公鑰的 SSH 驗(yàn)證模式,克隆過(guò)程中不會(huì)提示需要輸入密碼助琐。
如果有提示輸入密碼祭埂,則意味著在[添加git的遠(yuǎn)程公鑰]這個(gè)步驟中沒(méi)有操作成功。