一、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://im@210.14.155.87/data/svn im

    ps:这样是需要输入密码的,如果想免密钥登陆,需要通过ssh-kengen生成密码