论坛首页 综合技术论坛

CVSNT+SSH HowTo

浏览 18850 次
锁定老帖子 主题:CVSNT+SSH HowTo
该帖已经被评为精华帖
作者 正文
   发表时间:2005-07-27  
CVSNT 可以支持使用 ssh 协议登录和提交代码,前提是你首先要正确安装好 CVS Server 和 SSH Server,这两个 Server 都能够正常工作。这篇 HowTo 并不是一篇全面讨论 CVSNT 或者 SSH 的文档,仅仅涉及到如何使 CVSNT 支持 ssh。这方面的文档在网络上是非常稀少的,其实配置并不象想象的那么复杂。因为这篇文档并没有意图全面涉及 CVSNT 和 SSH 两方面(任何一方面都足够写一本几百页的书来讨论了),如果你既不熟悉 CVSNT 也不熟悉 SSH,那么这篇文档无法帮助你,你需要尽快去补充一些基础知识。

进入正题,安装步骤分 3 步:
1、安装 CVSNT 并且可以正常使用 pserver 协议登录。
CVSNT 从这里下载:
http://www.cvsnt.com
详细的安装步骤请看:
http://www.cvsnt.org/wiki/InstallationTips
要注意使用 persver 协议支持建立别名(alias),映射到某个真实的系统用户,然后使用别名来登录。但是使用 ssh 协议并不支持别名,所以为了以下步骤的顺利完成,在这一步一定不要使用别名,而要使用真实的系统用户。另外为了安全起见,CVS Repository 一定要安装在 NTFS 分区之上。

2、安装 copSSH 并且可以正常使用 ssh 客户端登录服务器。
copSSH 是基于 Cygwin 中的 OpenSSH 服务器/客户端工具发展起来的开源软件。copSSH 可以从这里下载,安装步骤也在这里:
http://www.itefix.no/phpws/index.php?module=pagemaster&PAGE_user_op=view_page&PAGE_id=12&MMN_position=22:22
安装完 copSSH 后一定要首先激活用户,然后使用这个用户来登录,例如:
ssh Administrator@127.0.0.1
如果登录成功就说明 SSH Server 已经正常运行了。

上面两步顺利完成后,你应该看到这 3 个服务:
CVSNT Dispatch Service
CVSNT Locking Service
Openssh SSHD

3、集成 CVSNT 和 copSSH
现在 CVSNT 服务器已经可以支持使用 ssh 协议来登录了。
不过如果你明白 CVSNT 支持 ssh 的工作原理的话,你会知道其实就是首先用 ssh 客户端登录,然后在服务器端使用 cvs server 命令来执行提交等操作(sever 是 cvs 的一个命令,可以查看 cvs 手册)。
cvs client <-------ssh------> cvs server <---> cvs repository
cvs 命令在两端同时运行,服务器端运行的 cvs 构成客户端运行的 cvs 的代理。
如果 ssh 服务器无法找到 cvs 这个命令,那么就无法执行相应的操作。
为了做到这一点,需要把以下文件 copy 到 copSSH 安装目录下:
C:\Program Files\copssh\bin
cvs.exe   
cvsapi.dll
dbghelp.dll
expat.dll 
msvcp71.dll
msvcr71.dll

现在服务器端要做的事情都做完了,下面是客户端的配置。
使用 CVSNT 自带的 cvs.exe,可以使用 ssh 协议登录,CVSNT 带有的 plink.dll 就是 ssh 客户端,可以被 cvs.exe 直接调用。
set CVSROOT=:ssh:user@hostname:/cvsrepo
cvs login
登录成功后以后就可以如同使用 pserver 协议一样执行各种 cvs 操作了。
但是我发现目前 CVSNT 自带的 cvs.exe 通过 ssh 和服务器端配合有问题。例如提交文件:
cvs ci -m ""
会报告错误。

解决这个问题很简单,在客户端不要使用 CVSNT 自带的 cvs.exe,而使用 cvs 官方提供的 cvs.exe,可以从这里下载:
http://www.cvshome.org
但是官方的 cvs.exe 要支持 ssh 不能够直接使用 ssh 协议,而要使用 ext 协议调用外部的 ssh 客户端。copSSH 就带有这样一个客户端。假设 CVSNT 和 copSSH 可执行程序的目录都在 PATH 环境变量中。
set CVS_RSH=ssh
set CVSROOT=:ext:user@hostname:/cvsrepo
使用 ext 协议不方便的地方就是不能保存口令,因此任何操作都要输入口令。当然你也可以写一个 .bat 文件很容易地解决这个问题。

现在已经可以使用任何 cvs 客户端通过 ssh 连接 CVSNT 服务器了。
对于 TortoiseCVS,配置方法在这里:
http://www.tortoisecvs.org/faq.html#ssh
也是使用 ext 协议调用 ssh 客户端 PuTTy 来进行登录的。
WinCVS 的配置方法可以自行搜索。
在 Eclipse 中可以使用 extssh 协议来登录。要注意 Eclipse 3.0.1 不能很好地支持 CVSNT,因此添加 CVS Repository 的时候会报一个错,忽略掉就可以了。Eclipse 3.1 已经解决了这些问题(不会报错了),对于 CVSNT 有很好的支持,请看:
https://bugs.eclipse.org/bugs/show_bug.cgi?id=35961
Eclipse 3.1 的运行速度比 3.0.1 还要快,因此如果版本服务器使用 CVSNT 的话建议升级到 3.1 版。

以上 3 步工作都做好以后,下一步就是采用稳健的安全策略来配置 CVS Repository 的访问权限了。这篇文档里面说得已经很详细了:
http://www.cvsnt.org/wiki/SetAcl

ssh 协议配置好了以后,可以删除掉 CVSNT 所支持的那些不安全的协议,方法很简单,直接删除掉 CVSNT 安装目录中的 xxx_protocol.dll 就可以了。例如我只保留了一个 ssh_protocol.dll。

That's it, have fun!
   发表时间:2005-07-28  
不好意思,看来是我自己犯了一点错误。CVSNT 带的 cvs.exe 是可以使用 ssh 协议与 CVSNT 服务器正常通信的。首先保证其所在目录出现在 PATH 环境变量的靠前位置(小心可能有几个地方都有 cvs.exe)。
set CVSROOT=:ssh:user@hostname:/cvsrepo
cvs login
以后的操作就和使用 pserver 协议是完全一样的了。
TortoiseCVS 同样也支持 ssh 和 ext 两种协议来访问 CVSNT Server,因为 TortoiseCVS 中的 cvs.exe 本来就是来自于 CVSNT 项目。
0 请登录后投票
   发表时间:2005-09-10  
CVSNT 还可以与这个 ssh Server 搭配使用,以支持 ssh 协议登录。
http://www.freesshd.com
这个 ssh server 使用起来更简单,还有图形化的配置界面,我就不详细介绍了。这个工具是 telnet server 和 ssh server 的结合体,不过缺省只会启动 ssh server。

CVSNT 可以与 CVSTracNT 搭配使用。不过由于 CVSROOT/history 文件的格式在 CVSNT 2.5.x 中发生了变化,而 CVSTracNT 现有版本只能分析老版本的 CVSROOT/history 文件格式,以获得 CVSNT 中的文件名称。CVSTracNT 测试过可以配合使用的 CVSNT 最高的版本是 CVSNT 2.0.58d,因此如果希望与 CVSTracNT 搭配使用,不能使用最高版本的 CVSNT。
CVSTracNT 就是 CVSTrac 的 Windows 移植版本(使用 Cygwin ),维护者是 cnpack 开发团队。可以从这里下载:
http://www.cnpack.org/download/CVSTracNT.exe
网站上还有 CVSTrac 管理员手册和用户手册的中文版。还有相关的论坛:
http://bbs.cnpack.org/forumdisplay.php?fid=20&page=

CVSTracNT 的功能主要包括:
1、填写任务单,分配任务。
2、问题跟踪。
3、知识共享的 Wiki。
4、浏览 CVS 目录和文件。

这样,支持 ssh 协议的 CVSNT + CVSTracNT 就构成了一个配置管理系统中的版本管理和问题跟踪系统。另外一部分创建管理可以使用 Ant 或者 Maven 来实现,这些工具构成了支持持续集成的基础设施,可以有效地提高我们的开发效率。

CVS、CVSTrac 的最佳运行平台肯定是 Linux,在 Windows 上面配置的难度要远远大于 Linux,而且性能也不如 Linux。但是对于那些没有熟悉 Linux 的开发人员的团队,引入一台 Linux 服务器显然增加了复杂度,所以还是有必要在  Windows 上面建立相应的开发环境的。关于这些工具的安装、使用、权限管理等等问题,可以直接找我咨询。
0 请登录后投票
   发表时间:2005-09-18  
经测试,freeSSHd 不能与 Eclipse 的 CVS 客户端共同使用,而使用 TortoiseCVS 则没有问题。
初步结论是这个 freeSSHd 目前还只支持 ssh1 登录,不支持 ssh2 登录,而 Eclipse 的 CVS 客户端使用 extssh 协议访问服务器时只支持 ssh2 登录。
所以为了使用 Eclipse 的 CVS 客户端(这个确实是我用过的功能最强大的 CVS 客户端),上面介绍的两个 ssh server 只能使用 copSSH。这个就是著名的开源软件 OpenSSH 的 Windows 移植版本,功能和稳定性都是有保障的。

另外还可以从这里下载另外一个 OpenSSH 的 Windows 移植版本,用法安装后看看 readme.txt。这个版本与 CVSNT 配合起来比 copSSH 更好,与 Eclipse 的 CVS 客户端配合使用也没有问题。其实这两个项目都是起源自 Cygwin 中的 ssh server,因此功能和稳定性上都是一样的。
http://sshwindows.sourceforge.net/
0 请登录后投票
   发表时间:2005-10-13  
好文章,正好需要,是在太谢谢dlee了
0 请登录后投票
   发表时间:2006-03-18  
在Windows上走ssh协议太麻烦了,研究一下sserver
0 请登录后投票
论坛首页 综合技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics