通過ssh驗證配置git服務端

以下內容,服務端是Centos7 git 1.8.3 , 客戶端是Win10 git 2.5.0

建議熟悉了git的使用再來配置git服務端。

小團隊開發,手動配置一個git管理就好。
1.安裝git
官網下載地址:http://git-scm.com/download/linux
官網就給了個yum,直接拿來執行吧,自己下載tar還需要一些相關支持,通過yum全幫你搞定,方便 。

$ yum install git

執行安裝完成後,可以通過以下命令查看版本

$ git --version

結果
git版本

到此git已經安裝完成,現在創建空的倉庫/data/git/xxxx.git

cd進入到/data/git目錄,執行以下命令初始化git版本庫

git init --bare myproject.git

執行結果如下:
git服務器項目

注意init時加–bare參數,服務端沒有工作區,是看到不到文件的。

現在要實現通過 git@host:/data/git/myproject.git來提交和更新文件做版本管理。git是用戶,host是域名或者你服務器IP,後面就是你剛剛創建的空倉庫路徑。myproject.git就是個文件夾,記得加上.git,統一規範。

後面就是創建git用戶了,其實你用root也可以的,還是規範,每個用戶做自己事兒就好。

2.創建git用戶

adduser git
passwd  git

把上面創建的/data/git/目錄的所有者改爲git用戶。

chown -R git /data/git

先建好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用戶push與pull代碼,而且每次都需要輸入密碼,顯然不太合理。

下面通過 ssh-keygen生成RSA密鑰驗證。

3.配置authorized_keys(如果你願意每次輸入密碼,這一步可省略)
生成私鑰和公鑰

$ ssh-keygen -t rsa -C "[email protected]"

生成密鑰
執行會讓你選擇生成目錄,設置密碼等,一路回車默認設置就好,最後會在系統用戶目錄看到.ssh文件中有id_rsa和id_rsa.pub,id_rsa是私鑰,自己保管,id_rsa.pub是公鑰,追加到服務端git用戶的.ssh/authorized_keys文件中,如果沒有這個文件自行創建。(手動添加實在不方便,後面介紹用ssh-copy-id添加)

已經完成了,重新建立連接,再pull一下試試,看是否還要你密碼,以後所有團隊成員,每人生成一個RSA密鑰添加到authorized_keys就好。


使用ssh-copy-id命令建立信任,省去了向authorized_keys添加公鑰的操作。

ssh-copy-id git@192.168.61.128

添加信任

通過git的git-bash.exe,可以執行linux命令,幫我們生成密鑰,執行ssh-copy-id等等命令。

備註:
如果你ssh端口不是22,那得用下面命令了

ssh-copy-id "-p 2200 user@host"

以上配置,基本能正常工作了,但還有一些缺陷,有興趣的可以繼續研究。
要方便管理公鑰,用Gitosis;
要像SVN那樣變態地控制權限,用Gitolite;
要想搞個web界面再裝gitweb,需要nginx等搭配;
要做成github那樣的系統用gitLab 。

花了兩天時間把Gitosis、Gitolite、gitWeb都配置了一遍,然後又看到gitLab,繼續折騰。最後發現並沒啥用,最基礎的就好,不用把時間花在無意義的事情上。。。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章