git伺服器技術總結終極版

MirrowJJ發表於2017-09-11

伺服器端
①新建一個git使用者
useradd -g(所屬組) git -d(自定義使用者檔案目錄 預設在/home裡) /home/git git(使用者名稱)
(設定所屬組的時候建議先建立使用者組 groupadd git)
②檢查/etc/passwd檔案
一般為git:x:501:500::/home/git:/bin/bash
其中501為使用者編號 500為組編號 一定要保證一一對應 如果對組編號有疑問
可以執行cat /etc/group檢查組編號
③修改passwd檔案 阻止git使用者shell登入(使git使用者不能使用ssh登入到伺服器
只能使用git-shell進行操作)
將git:x:501:500::/home/git:/bin/bash修改為
git:x:501:500::/home/git:/usr/bin/git-shell
(注:(非常重要!!!已經在這個問題上糾結了好幾天)一定要確保git-shell檔案存在於/usr/bin目錄裡 如果不存在 可以使用
which git-shell命令查詢git-shell所在的位置 然後複製到/usr/bin/ 目錄裡即可)
④(重要!!!)修改使用者資料夾的許可權和增加authorized_keys(公鑰檔案)
在第①步的時候指定了使用者資料夾(/home/git),移動到/home位置 然後用ll(LL 不是11)命令檢視git資料夾
drwx—— 3 git git 4096 Sep 11 14:44 git
其中 drwx—— 代表的是資料夾許可權 也就是700 第一個git代表的是使用者,第二個代表的是組,第三
個代表的是資料夾(使用者名稱和組名一定要對應 如果是不對應的話可以輸入chmod -R git:git git)
接著cd git進入git目錄 然後mkdir .ssh(一般沒有這個檔案 所以得新建) 並且設定它的許可權為
700(chmod 700 .ssh)然後在cd進入.ssh目錄 建立auth檔案(touch authorized_keys)並且設定它
的許可權為644(設定許可權的時候一定要用ll(LL 不是11)檢查一下許可權是否屬於相應的使用者和組)
(重要一步!!! 將git使用者在git-bash中生成的ssh_key(這個操作在客戶端會講到)複製貼上到伺服器新建的authorized_keys中)
⑤修改ssh配置檔案 vi /etc/ssh/sshd_config
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
找到這三個配置選項 按上面修改 如果有#註釋就去掉 總之改這三個就行了
改完之後儲存 重啟ssh服務(service sshd restart)
⑥重啟完之後 找個位置去建你的git庫
先新建個檔案 比如我在/data中建了個資料夾git(mkdir git)
cd到git資料夾中 接著建一個空白庫-> git init –bare example.git(注:名字自定義但是字尾建議寫為.git)
接著ll 就會發現生成一個.git為字尾的資料夾 不要著急進去 我們直接更改它的許可權
chown -R git:git example.git(先把這個庫的許可權賦予你要指定的git使用者,如果你想設定多個庫,自己使用chmod設定
許可權即可,這裡不再贅述)
好了,伺服器端就到這裡告一段落了 接著我們去看客戶端操作
客戶端
①安裝git客戶端
git客戶端在windows上也很常用 可以百度下載客戶端 安裝
②配置git客戶端
說的是配置 但是其實也是幾步簡單的操作
第一步 安裝好git後點選滑鼠右鍵就會發現右鍵選單多了兩個選項 一項是git GUI here 另一個是git Bash here 這裡我們主要
用的是git bash here,在主機上選擇(或者新建)你要存放庫的資料夾,開啟資料夾滑鼠右鍵點選git bash here,接著就會彈出
一個類似於命令提示符的框
第二步 生成ssh_key(重要!!!!!!)
接著我們在命令框中輸入ssh-keygen -t rsa -C “xxx@xxx.com(你自定義郵箱)” 接著一路回車
就會在本機生成你的專屬ssh_key 一般存放目錄在~/.ssh/中(注:~在linux中代表的是家目錄,在windows中一般在c:\使用者(users)\
Administrator\),找到你的.ssh資料夾點進去 開啟id_rsa.pub檔案 把裡面的公鑰複製貼上到伺服器對應使用者的.ssh/authorized_keys中
第三步 直接操作
新增遠端庫 git remote add git(你在伺服器新建的git使用者名稱)@你的服務端ip地址:/data/git/example.git(你的git庫絕對路徑)
接著git remote -v檢視遠端庫是否建立成功(報錯的話 ssh git@ip -vv 檢視連線log 找尋問題所在)
第四步 進行clone操作
連線ok後 可以把遠端的庫克隆到本地(如果提示You appear to have cloned an empty repository不要慌張 這是因為你的庫裡沒東西,隨便
touch點兒什麼push上去就行了 具體操作很簡單 百度一下你就知道)
最後:問題總結
因為前幾天一直糾結總是提示輸入使用者密碼的問題,搞得我頭疼。今天google的時候突發奇想,因為自己有兩臺伺服器,一臺公司的,一臺是自己
的,這幾天一直在自己的伺服器上折騰,針對每次clone或push都要密碼的問題想認真地總結一下
①一定要檢查使用者許可權!!!一定要檢查使用者許可權!!!一定要檢查使用者許可權!!!
要記住 使用者目錄資料夾700 資料夾裡的.ssh資料夾700 .ssh裡面的authorized_keys檔案一定要644
並且他們的許可權歸屬一定要有相對應的使用者和使用者組(git:git)
②給git使用者設定禁止shell登陸的時候一定要注意!!!!!!
git:x:501:500::/home/git:/usr/bin/git-shell
這個git-shell檔案一定要存在 並且路徑要設定正確(不一定非要/usr/bin中,只要找到git-shell對應的目錄就行)
③檢查/etc/ssh/sshd_config配置檔案是否配置正確
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
這三項一定要配置好 配置完成後一定要記得重啟ssh服務(service sshd restart)
④(待研究)git庫也要配置好所屬許可權(chown -R命令操作git庫資料夾,把它賦予給相應的git使用者和組)

相關文章