关于CVS,以前已经写过一篇了。这是《开源世界》2004年3期上的文章,从作者的名字看,有一个应是我的同学。
一、 Pserver方式
1、 设置服务器
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文件存在,其内容如下:
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来启动cvs服务器
#/etc/rc.d/init.d/xinetd restart
5) 检查防火墙,使其放开2401端口
6) 并用下行命令检查2401端口是否已被正确绑定
#netstat –an|grep 2401
7) 设置环境变量CVSROOT
#CVSROOT=/usr/local/cvsroot; export CVSROOT
可将此放入/etc/profile文件中,以在系统启动时自动设置此变量
8) 初始化CVS
#cvs init
此时,$CVSROOT目录下会出现名为CVSROOT的目录
2、 客户端设置
#cvs –d “:pserver:sun@192.168.0.252:/usr/local/cvsroot” login
#[输入密码]
#cvs import //第一次使用时
#cvs checkout
#cvs logout
3、 高级设置
1) 将CVS帐号和系统帐号分开使用
编辑/usr/local/cvsroot/CVSROOT/passwd文件(此文件安装时并不存在)
每行格式如下:CVS帐号:密码:系统帐号
例子:cvsuser:xcgaer5321dsa:sun
cvsuser登录cvs后,会影射到系统用户sun.
2) 编辑/usr/local/cvsroot/CVSROOT/readers
每行一个账号,只读权限
3) 编辑/usr/local/cvsroot/CVSROOT/writers
每行一个账号,读写权限
二、 SSH方式
1、 安装OpenSSH
1) 检查OpenSSH是否安装
#rpm –qa |grep ssh
2) 检查sshd是否运行
#ps –aef|grep ssh
3) 启动sshd
#/etc/rc.d/init.d/sshd start
2、 基于传统口令认证
#ssh –l [在远程服务器上的帐号] [远程服务器的主机名或ip地址]
#[yes]
#[输入密码]
3、 基于密钥认证
1) 配置远程服务器
编辑/etc/shh/sshd_config文件
将PasswordAuthentication yes改为PasswordAuthentication no
2) 配置客户端
3) 在客户端生成密钥
#cd ~
#ssh-keygen –t rsa (dsa)
#~/.ssh/id_rsa.pubid文件即是公钥
4) 发布公钥
将上步生成的id_rsa.pubid文件复制到远程服务器的sun用户目录下
$cd .ssh
$cat ../id_rsa.pubid >> authorized_keys
5) 访问CVS源代码库
客户端设置如下可以访问CVS了
$export CVS_RSH=ssh
$export CVSROOT=:ext:sun@192.168.0.252:/usr/local/cvsroot
三、 SSH通道下的pserver方式
1、 服务器端
服务器按pserver方式设置,并改动/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)客户端需要通过任一个远程服务器的用户,来建立ssh通道
$cd ~
$ssh-keygen –d
$将.ssh/id_rsa.pubid文件内容追加到远程用户如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
此时该窗口进入阻塞状态
2)在另一个窗口中,
$export CVSROOT=:pserver:sun@192.168.0.252:/usr/local/cvsroot
其中sun是CVS用户