關(guān)于CVS,以前已經(jīng)寫過一篇了。這是《開源世界》2004年3期上的文章,從作者的名字看,有一個(gè)應(yīng)是我的同學(xué)。
一、 Pserver方式
1、 設(shè)置服務(wù)器
0) 建立使用CVS的用戶或組
#su -
#groupadd linux
#useradd –g linux sun
#useradd –g linux zhang
1) 建立CVS源代碼庫目錄
#cd /usr/local
#mkdir cvsroot
#chmod 774 cvsroot
#chown sun:linux
2) 檢查/etc/services文件,以確保有以下兩條:
cvspserver 2401/tcp
cvspserver 2401/udp
3) 檢查/etc/x.netd.d/目錄,以確保cvspserver文件存在,其內(nèi)容如下:
service cvspserver
{
disable=no
socket_type=stream
wait=no
user=root
server=/usr/bin/cvs
server_args=-f –allow-root /usr/local/cvsroot pserver
log_on_suclearcase/" target="_blank" >ccess+= USERID
log_on_failure+=USERID
}
4) 通過重啟xinetd來啟動(dòng)cvs服務(wù)器
#/etc/rc.d/init.d/xinetd restart
5) 檢查防火墻,使其放開2401端口
6) 并用下行命令檢查2401端口是否已被正確綁定
#netstat –an|grep 2401
7) 設(shè)置環(huán)境變量CVSROOT
#CVSROOT=/usr/local/cvsroot; export CVSROOT
可將此放入/etc/profile文件中,以在系統(tǒng)啟動(dòng)時(shí)自動(dòng)設(shè)置此變量
8) 初始化CVS
#cvs init
此時(shí),$CVSROOT目錄下會(huì)出現(xiàn)名為CVSROOT的目錄
2、 客戶端設(shè)置
#cvs –d “:pserver:sun@192.168.0.252:/usr/local/cvsroot” login
#[輸入密碼]
#cvs import //第一次使用時(shí)
#cvs checkout
#cvs logout
3、 高級(jí)設(shè)置
1) 將CVS帳號(hào)和系統(tǒng)帳號(hào)分開使用
編輯/usr/local/cvsroot/CVSROOT/passwd文件(此文件安裝時(shí)并不存在)
每行格式如下:CVS帳號(hào):密碼:系統(tǒng)帳號(hào)
例子:cvsuser:xcgaer5321dsa:sun
cvsuser登錄cvs后,會(huì)影射到系統(tǒng)用戶sun.
2) 編輯/usr/local/cvsroot/CVSROOT/readers
每行一個(gè)賬號(hào),只讀權(quán)限
3) 編輯/usr/local/cvsroot/CVSROOT/writers
每行一個(gè)賬號(hào),讀寫權(quán)限
二、 SSH方式
1、 安裝OpenSSH
1) 檢查OpenSSH是否安裝
#rpm –qa |grep ssh
2) 檢查sshd是否運(yùn)行
#ps –aef|grep ssh
3) 啟動(dòng)sshd
#/etc/rc.d/init.d/sshd start
2、 基于傳統(tǒng)口令認(rèn)證
#ssh –l [在遠(yuǎn)程服務(wù)器上的帳號(hào)] [遠(yuǎn)程服務(wù)器的主機(jī)名或ip地址]
#[yes]
#[輸入密碼]
3、 基于密鑰認(rèn)證
1) 配置遠(yuǎn)程服務(wù)器
編輯/etc/shh/sshd_config文件
將PasswordAuthentication yes改為PasswordAuthentication no
2) 配置客戶端
3) 在客戶端生成密鑰
#cd ~
#ssh-keygen –t rsa (dsa)
#~/.ssh/id_rsa.pubid文件即是公鑰
4) 發(fā)布公鑰
將上步生成的id_rsa.pubid文件復(fù)制到遠(yuǎn)程服務(wù)器的sun用戶目錄下
$cd .ssh
$cat ../id_rsa.pubid >> authorized_keys
5) 訪問CVS源代碼庫
客戶端設(shè)置如下可以訪問CVS了
$export CVS_RSH=ssh
$export CVSROOT=:ext:sun@192.168.0.252:/usr/local/cvsroot
三、 SSH通道下的pserver方式
1、 服務(wù)器端
服務(wù)器按pserver方式設(shè)置,并改動(dòng)/etc/xinetd.d/cvspserver文件如下。
service cvspserver
{
flags=REUSE
socket_type=stream
wait=no
user=root
server=/usr/bin/cvs
server_args=-f –allow-root=/usr/local/cvsroot pserver
passénv=
log_on_failure+=USERID
only_from=127.0.0.1
bin=127.0.0.1
}
改完之后重啟xinetd.
2、 客戶端
1)客戶端需要通過任一個(gè)遠(yuǎn)程服務(wù)器的用戶,來建立ssh通道
$cd ~
$ssh-keygen –d
$將.ssh/id_rsa.pubid文件內(nèi)容追加到遠(yuǎn)程用戶如zhang的~/.ssh/authorized_keys后。
$ssh –v –a –e none –N –o ‘KeepAlive=yes’ –o ‘BatchMode=yes’ –L 2401:localhost:2401 zhang@192.168.0.252
此時(shí)該窗口進(jìn)入阻塞狀態(tài)
2)在另一個(gè)窗口中,
$export CVSROOT=:pserver:sun@192.168.0.252:/usr/local/cvsroot
其中sun是CVS用戶