一、Subversion的传输协议
Subversion可以支持以下多种传输协议,以便客户端和仓库之间进行数据版本控制:
引用
file:// 本地数据传输
http:// 基于Apache的HTTP协议(明文)
https:// 基于Apache+SSL的HTTPS协议
svn:// 基于svnserve的SVN协议(明文)
svn+ssh:// 基于SSH的svnserve协议
可见,正如telnet与ssh方式的差别一样,Subversion也可以采用加密的传输方式。
二、实现SVN over SSH方式
要使用svn+ssh://方式前,我们先列举一些该方式的优缺点:
1、网络协议是有状态的,svn+ssh比WebDAV快很多;
2、该方式可以利用现有的ssh帐号和用户基础;
3、只有一个认证方法可选择,并且需要用户在同一个系统组,使用共享ssh密钥;
4、没有任何类型的日志,甚至是错误,如果使用不正确,会导致文件许可问题。
另外,在使用该方式的注意事项是:
1、svn客户端在访问远端时,默认除保存验证信息外,还会保留协议类型,以方便下次提交版本更新时不需再次定义;
但这就是说,你不能这次使用svn+ssh://,而下次用svn:// ;
2、该方式会同时进行两重验证,一是ssh的密钥验证,二是svnserve设置的访问权限认证,缺一不可;
3、该方式是依赖于ssh来发起一个svnserve进程,然后网络断开后终止进程,所以,远端是不需要单独启动svnserve服务的;
4、因此,连接是需要直接指向版本仓库在远端的实际物理路径,而不是svnserve给出的映射路径
1. 服务器安装
(1) 安装ssh服务器和subversion服务器
yum install -y subversion
(2)创建登陆的用户(一定是要能登陆的账号,如果设置为不能登陆,就会报错)
useradd im
passwd im
(3)创建svn仓库
mkdir /data/svn
svnadmin create /data/svn
(4)修改权限
chown -R root.im /data/svn/
(5)修改配置文件(都在你的工程目录下)
1.修改svnserver.conf文件
anon-access = none // 未认证的用户没有任何访问权限
auth-access = write // 认证的用户有写权限
authz-db = authz // 认证文件为conf目录下的authz文件
realm = /data/svn/ //工程所在的目录
2.修改authz文件
[/]
svnserver = rw //读写
im =r //只读
* = //除了以上用户或组都不能使用
(6)访问(服务端不需要启动)
svn co svn+ssh://[email protected]/data/svn im
ps:这样是需要输入密码的,如果想免密钥登陆,需要通过ssh-kengen生成密码
本文转自wangfeng7399 51CTO博客,原文链接:http://blog.51cto.com/wangfeng7399/1686162,如需转载请自行联系原作者