Git服務器準備
假設Git所在服務器為Ubuntu系統,IP地址10.17.1.5。
一. 準備運行git服務的git用戶,這里用戶名就直接設定為git。
1. 創建一個git用戶組,并創建git用戶。
sudo groupadd git
sudo useradd git -g git
2. 創建git用戶目錄,以及密鑰認證文件。
sudo mkdir -p /home/git/.ssh
sudo touch /home/git/.ssh/authorized_keys
cd /home
sudo chown -R git:git git
3. 確保git用戶的認證文件權限正確。
sudo chmod 700 /home/git/.ssh
sudo chmod 600 /home/git/.ssh/authorized_keys
4. 禁用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每次一登錄就自動退出。
二. 安裝git。
安裝git:
sudo apt install git
三. 創建git倉庫。
1. 先創建一個目錄作為Git倉庫。
Git倉庫目錄通常命名為*.git,假定是/data/git/demo.git。
創建目錄:
mkdir -p /data/git/demo.git
將目錄所有者改為git用戶:
cd /data/git
sudo chown -R git:git demo.git
2. 初始化Git倉庫。
cd /data/git
sudo git init --bare demo.git
四. 為使用Git服務的用戶創建密鑰。
1. 生成密鑰文件。
假設為張三、李四兩名開發者分別準備密鑰。
使用ssh-keygen工具為張三創建密鑰對:
ssh-keygen -t rsa
創建密鑰的過程中,一路點擊回車就可以了,不需要填任何東西。
生成的公鑰和私鑰文件默認存儲在用戶目錄下的.ssh目錄中。
例如linux系統中root用戶執行ssh-keygen生成的密鑰文件位于:
/root/.ssh
windows系統中dancen用戶生成的密鑰文件位于:
C:\Users\dancen\.ssh
其中,id_rsa.pub為公鑰,id_rsa為私鑰,這里重命名密鑰文件為:
id_rsa_zhangsan.pub
id_rsa_zhangsan
再次使用ssh-keygen工具為李四創建密鑰對:
ssh-keygen -t rsa
然后重命名密鑰文件為:
id_rsa_lisi.pub
id_rsa_lisi
2. 添加公鑰至Git服務器的git用戶認證文件中。
把公鑰添加到git服務器上git用戶的認證文件/home/git/.ssh/authorized_keys。
依次把id_rsa_zhangsan.pub、id_rsa_lisi.pub的內容添加到authorized_keys中,authorized_keys內容如下:
# zhangsan
ssh-rsa ****** ad\zhangdan@gzy-20210126-02
# lisi
ssh-rsa ****** ad\zhangdan@gzy-20210126-02
3. 將私鑰提供給使用Git服務的用戶。
分別將id_rsa_zhangsan.pub、和id_rsa_lisi.pub提供給使用Git服務的zhangsan和lisi。
Git客戶端準備
一. 在客戶端部署Git私鑰。
使用Git服務的用戶需要將Git服務器管理員提供的私鑰文件妥善存儲。
以zhangsan為例,假設其使用windows系統,通常將私鑰文件存儲到用戶目錄下的.ssh目錄:
C:\Users\zhangsan\.ssh
用戶在使用git時默認匹配的私鑰文件為:
C:\Users\zhangsan\.ssh\id_rsa
如果私鑰文件沒有部署在默認位置,或者沒有使用默認名稱id_rsa,則用戶在使用git時需要臨時指定私鑰文件。
此時,為了避免每次都臨時指定密鑰文件,可通過客戶端的配置文件config明確指定私鑰文件和服務器的對應關系。
config文件位置:
C:\Users\zhangdan\.ssh\config
在config中添加如下內容:
Host 10.17.1.5
????HostName 10.17.1.5
????User git
????IdentityFile ~/.ssh/id_rsa_zhangsan
如此,當用戶通過ssh連接10.17.1.5服務器時,將自動使用id_rsa_zhangsan作為私鑰。如果存在多個ssh服務器和私鑰映射關系,則在config中繼續添加配置即可。
二. 克隆git倉庫。
1. 安裝git。
略
1. 配置git用戶身份。
git config --global user.name "zhangsan"
git config --global user.email "zhangsan@ad.com"
解釋
git config --global user.name "Your Name":這條命令設置全局的 Git 用戶名,所有的 Git 提交都會使用這個名字。
git config --global user.email "email@example.com":這條命令設置全局的 Git 用戶電子郵件地址,所有的 Git 提交都會使用這個電子郵件地址。
2. 克隆git倉庫。
git clone git@10.17.1.5:/data/git/demo.git