github和gitlab是最常見的兩個免費的git server,本部落格就是搭建在github上,gitlab沒有于github出名,其提供了免費的私有git庫,github的私有庫則是收費的。也可以在自己的伺服器上搭建git遠端庫,推送和拉取的速度比直接使用github快,也不會存在安全性問題,本文介紹相關操作。
<a></a>
作業系統:centos6.6
伺服器ip位址:192.168.80.6
伺服器git版本:1.7.1
若伺服器沒有安裝git,請先安裝。
用戶端:win7,cygwin
用戶端ip位址:192.168.80.2
假設倉庫名為<code>gitserver.git</code>。
裸與普通倉庫的差別是,裸倉庫不放置具體代碼,僅放置git的資訊,即裸倉庫的根檔案夾就是普通倉庫的.git檔案夾。
開啟cygwin。先連接配接之前puttygen生成的ssh的key檔案。
将key發送給伺服器,過程中輸入git密碼。
驗證下是否可以免密碼登入。
其他用戶端也可類似配置puttygen生成的key
在centos6.6上操作本章。
發現中文路徑名亂碼。進行如下配置。
再次測試。
<code>git</code>使用者可以通過使用者名密碼進行通路是非常不安全的,建議禁止<code>git</code>使用者遠端bash通路。
使用<code>root</code>修改<code>/etc/passwd</code>檔案的使用者<code>git</code>的資訊。
将<code>git</code>使用者的預設<code>shell</code>改為<code>git-shell</code>。
cygwin測試如下。
伺服器拒絕了遠端登入。
但是,屏蔽了bash後,無法使用<code>ssh-copy-id</code>進行key的登記。
解決方法使用<code>root</code>使用者手動修改<code>~git/.ssh/authorized_keys</code>,添加用戶端的.<code>pub</code>資訊。或在cygwin下使用如下複雜的指令。
解釋下此指令:使用<code>root</code>登入伺服器,執行單引号内的内容,首先建立<code>~git/.ssh</code>檔案夾,将一些資訊複制到<code>~git/.ssh/authorized_keys</code>的末尾,修改<code>.ssh</code>權限為<code>700</code>,<code>authorized_keys</code>權限為<code>600</code>,因為是<code>root</code>建立,預設建立的檔案夾和檔案都是屬于<code>root</code>使用者,用<code>chown</code>修改檔案夾及内部所有檔案為<code>git</code>使用者群組。剛才說的一些資訊就是cygwin下的<code>~/.ssh/id_rsa.pub</code>檔案的内容。
之是以使用<code>;</code>而不用<code>&&</code>,是因為如果<code>.ssh</code>檔案夾存在,<code>mkdir</code>指令會失敗,使用<code>&&</code>後續的指令都将不執行直接傳回錯誤。
~~ eof ~~