如何配置和使用SSH驗證的CVS系統伺服器

來源:互聯網
上載者:User

 

cvs(Concurrent Version System)是一種非常普及的版本控制工具。儘管其功能不如Perforce、Subversion等強大,但由於其便於配置、使用簡單,並且,推出時間較長,因此在各種個樣的軟體項目中應用十分廣泛。

首先是安裝FreeBSD並應用安全補丁。這一步非常簡單,下載一張FreeBSD(即將推出的5.2-RELEASE是一個不錯的選擇,在這篇文章發表時,這個版本可能已經能夠下載了)的mini iso燒成CD-ROM,然後安裝就可以了(選擇“Minimum”安裝)。注意,為了能夠使用ssh驗證,請務必安裝crypto。為這台機器配置網路,等等之後,重新啟動就好了。

然後是安裝一些必要的package。FreeBSD 4.x內建了perl,而在5.x中,perl被從基本系統中刪去了。為了能夠更好地使用包括ACL、commit mail在內的一系列功能,必須安裝perl。

我個人推薦使用ports中的5.8.x版本的perl。在安裝之前,首先確信系統中沒有perl 5.6.x的安裝,對於新系統,大可以放心地執行下面的命令:

這將刪除已經存在的任何package。一般來說,絕大多數FreeBSD使用者都使用cvsup來更新系統,然而在發行的光碟片中,cvsup-without-gui並沒有包含在內,而普通的cvsup package則需要X11的一系列庫。為了避免麻煩,可以考慮下面兩種不同的途徑來完成第一次的代碼更新工作:

1、使用FreeBSD中的cvs來同步代碼:

cvs -d :pserver:anoncvs@anoncvs.jp.FreeBSD.org:/home/ncvs login

輸入“anoncvs”,斷行符號

cd /usr

cvs -R -d :pserver:anoncvs@anoncvs.jp.FreeBSD.org:/home/ncvs export -r RELENG_5_2 src ports

注意:如果你使用的不是5.2-RELEASE,請適當地修改RELENG_5_2(例如,4-STABLE是RELENG_4,-CURRENT是HEAD,等等)

2、安裝cvsup-without-gui:

pkg_add -r cvsup-without-gui

然後用cvsup來同步代碼,限於篇幅,這裡不再贅述

我個人推薦使用第一種方法,當然,第二種方法應該會更快一些,而且不需要手工編譯cvsup。隨後,安裝Perl 5.8.x:

cd /usr/ports/lang/perl5.8 && make all install clean && rehash

緊接著我們會遇到一個很嚴重的問題:ports裡面的use.perl指令碼並不知道系統中原本沒有安裝perl,因此在執行的時候會出錯——這時,只需要為perl做一個符號串連就可以了。做好之後,執行:

use.perl port

這樣use.perl指令碼會協助你完成修改設定檔(如/etc/make.conf)等一系列工作。此處不表,稍微配置一下OpenSSH(sshd)的配置,一般來說,增加下面兩行:

Protocol 2

PasswordAuthentication no

這麼做的好處:(1)只允許ssh2協議登入,這能夠提供更好的安全性(2)不允許使用口令登入,這毫無疑問地將提高安全性。

1、建立cvs repository

好了,前期配置基本上就結束了。不要忘了建立一個用於cvs使用者的組,例如,ncvs,以及一個用於管理cvs repository的使用者,如repoman(它當然要屬於ncvs那個組),然後,建立一個目錄來儲存cvs repository,本例中,我們把它放到/home/ncvs中:

rm -rf /home/ncvs

mkdir -p /home/ncvs

chown -R repoman:ncvs /home/ncvs

chmod -R 775 /home/ncvs

接下來就是初始化這個repository了,簡單地執行:

su -l repoman

cvs -d /home/ncvs init

就可以了。

目前,所有的FreeBSD版本中包含的cvs都存在一個微小的安全性漏洞,儘管這個漏洞只能在本地利用,但建議您把它補上方法是找到 /usr/src/contrib/cvs/src/expand_path.c 中的

return current_parsed_root->original;

一行,把它改為

return current_parsed_root->directory;

當然,接下來就是重新make world kernel了。需要說明的是,如果您使用的是5-CURRENT,還需要修改一些代碼才能讓它達到5.2-RELEASE那樣的效能(-CURRENT中開啟了大量的調試選項),具體方法這裡不再贅述。

2、配置commitmail和ACL

接著配置cvs commitmail和ACL。我個人認為commitmail是團隊軟體開發中非常重要的一件東西,對於cvs來說,這一點尤為重要,因為cvs沒有原子提交功能,而commitmail恰好彌補了這個不足。

FreeBSD的Team Dev使用了一套很好的perl指令碼來完成commitmail的功能,同時,他們還使用cvs的hook實現了簡單的存取控制功能(ACL)。我本人使用的cvs repository基於FreeBSD的CVSROOT,並且作了少量的修改。

使用這個CVSROOT覆蓋您的CVSROOT,並且,您還需要把其中freebsd目錄下的mailsend.c編譯並將結果放到/usr/local/bin中(這個CVSROOT中的指令碼假定這件事)。另外,這個CVSROOT需要一些修改才能正式投入使用(例如,機器名,等等)。這些設定可以在cfg_local.pm裡面找到:

$MAILADDRS = cvs-all@example.org;

這個是commitmail將要發送到的地方。

$MAIL_BRANCH_HDR = "X-Phantasm-CVS-Branch";

這個是將要添加到commitmail頭部的資訊,如果您使用郵件清單的話,它能夠協助郵件清單自動分揀。

$MAILBANNER = "The Phantasm Studio repository";

這一行將出現在commitmail中,表示commit到了哪一個repository。

if ($hostname =~ /^cvs.example.org$/i)

這個是判斷commit的主機名稱的

$CVSWEB_URL = "http://cvsweb.example.org/cgi-bin/cvsweb.cgi";

這個是cvsweb服務的網址

簡單介紹一下CVSROOT中的其他檔案

avail: 這個檔案用於控制使用者組的存取權限。

access: 這個檔案用於控制誰能夠執行cvs操作。

exclude: 這個檔案用於控制那些檔案不需要檢查cvs tag

options: 這個檔案用於控制cvs tag的展開,例如,可以定義$Phantasm$,等等

3、配置使用者和限制ssh許可權

使用ssh驗證的一個比較讓人頭疼的問題就是,ssh意味著使用者擁有一個系統帳號,並且,他們能夠登入進來。如果配置不當,他們還能得到一個shell,這很自然地會成為潛在的安全隱患。

因此,必須非常小心地處理cvs的ssh驗證問題。基本的原則是:禁止使用者作任何操作,除非我們允許他們這麼做。

按照下面的規則建立使用者:

使用者的“主”組是ncvs(這不僅限制使用者的許可權,也讓我們能夠更容易地控制其他使用者不能在cvs repository裡面隨意commit)

使用者不使用口令驗證,這將緩解由於不正確地設定ftp等造成的安全隱患

仍然給使用者一個shell,這個“shell”可以是一個perl指令碼,它只允許執行cvs 開頭的命令

隨後,讓使用者使用openssh的ssh-keygen產生自己的金鑰組。OpenSSH在絕大多數*BSD和Linux發行版中都可以找到,如果使用者使用的是Windows案頭,則需要安裝cygwin(特別地,安裝net中的OpenSSH),當然,執行的命令是一樣的:

ssh-keygen -t dsa -b 2048

對於偏執狂型安全愛好者,可以考慮將-b後面的2048換成4096。當然,根據木桶原理,如果你真是一個偏執狂的話,顯然也應該強迫你的所有合作者也都使用至少和你一樣長的密鑰:)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.