朋友昨天问我一个问题,他公司使用的vpn连接的svn,使用svn管理软件进行svn update是可行的,使用命令行svn update出错,svn status可行。

思路1:

刚开始我关注的焦点都在vpn上,以为是软件与svn有绑定,而命令行没有绑定。搜索了百度百科,大致了解了什么叫vpn。我的理解就是一个中介装置,外部的网络想要访问公司内部的网络,不可以直接访问,通过一个中转服务器,由中转服务器负责将请求转到内网。中转服务器就是vpn服务器,它有两个网卡,一个负责和公司内部网络交互,一个负责和外部网络交互。如果我在外地出差,在我的机器上配置好vpn服务器的ip,那么我的请求就可以通过vpn服务器的中转到达公司内部,从而间接访问内网资源,我的机器和vpn服务器和内网看起来相当于一个局域网一样,因此叫做虚拟局域网。vpn服务器不仅仅可以转发功能,还可以通过它进行传输加密,像隧道一样。经过分析发现,vpn和svn管理软件没有任何关系,vpn提供的是一种进入某一个私有网络的方式,关注的焦点都在svn命令行和管理软件的区别上了。

思路2:

svn status是比较本地版本和.svn的本地版本的差别,此命令不需要网络的支持,svn update,svn commit需要网络的支持,再次执行svn co命令也不行,可以基本确定是svn命令行与svn服务器的沟通有问题。后来他qq发过来svn update命令的出错信息:Cannot negotiate authentication mechanism。当时我信息就在想,怎么不早点说呢?

思路3:

google搜索Cannot negotiate的相关问题,基本出奇的一致,需要安装sasl2_md5的什么东西,由于他的是mac os的系统,不支持网上centos通吃的yum install的方式,下载了sasl2的源码,编译出lib库,还是没能解决问题。不过问题基本明朗了,和vpn没有关系,主要是svn管理软件支持sasl2加密传输,而命令行不支持,于是想到升级svn命令行,升级到svn1.7,问题完美解决。

弄完这个问题之后,对如何配置svn服务器有了些兴趣,就参照网上的一些教程配置了svn服务器,系统是ubuntu10.04。

1,安装svn,兼具客户端和服务器功能

sudo apt-cache search svn

sudo apt-get install subversion

2,创建repository

svnadmin create test_repos

这个命令会在当前文件夹下生成test_repos目录,主要关注此目录下的conf目录下的文件

3,更改配置文件,设定用户名和密码

cd test_repos/conf

vim passwd

添加一行用户名=密码,例如test=test

vim svnserve.conf  

去掉password-db = passwd的注释

去掉realm = myrealm的注释

4,导入要管理的基础文件

logfiles_for_svn_server为我自己随意设置的一个目录,便于svn测试使用的。

svn import logfiles_for_svn_server/ svn://localhost/test_repos -m "this is my first repositionary?"

这句的意思是将logfiles_for_svn_server目录导入到上面的test_repos链接中。

5,启动服务器

svnserve --daemon --root  .

以当前目录作为根目录,checkout的时候可以直接svn co svn://localhost/test_repos/就可以下载了。

6,测试当前的test_repos

mkdir test_client

cd test_client

svn co svn://localhost/test_repos/

不使用密码方式,使用
sasl2进行认证加密传输,写了以下几个脚本便于操作.

比上面多了一个步骤,需要配置sasl2

1,更改svnserve.conf文件,使能sasl2

cd test_repos/conf

vim svnserve.conf 

修改sasl2的配置如下:

[sasl]

use-sasl = true

min-encryption = 128

max-encryption = 256

主要是使能sasl,设置加密的密钥长度,可以看到如果启动了sasl,那么password-db = passwd将变成无效,因此可以不用管它。

2,创建svn,conf,设置sasldb的路径

cd /usr/lib/sasl2

sudo vim svn.conf

添加:


pwcheck_method: auxprop


auxprop_plugin: sasldb


sasldb_path: /usr/lib/sasl2/sasldb


mech_list: DIGEST-MD5

此步骤需要确保你有libsasl*.so库,一般处于的目录是/usr/lib/sasl2,如果没有需要安装sasl2库。

sudo apt-get install sasl2-bin libsasl2-2 libsasl2-modules libsasl2-modules-sql。

进入/usr/lib/sasl2目录,创建svn.conf文件,文件主要设置加密算法和加密的db路径。

3,创建sasldb数据库文件,存储用户名和密码

设置realm的用户名和密码,myrealm取自于repository的conf目录的svnserve.conf的配置文件。

cd /usr/lib/sasl2

sudo apt-get install sasl2-bin

sudo saslpasswd2 -c -f /usr/lib/sasl2/sasldb -u myrealm test

用户名为test,密码会提示用户输入

4,重新启动服务器,注意不是以root方式启动会导致读取svn.conf失败

killall svnserve

svnserve --daemon --root  .

5,如果出现svn客户端checkout时用户名密码错误,那可能是配置文件的权限问题。

cd /usr/lib/sasl2

sudo chmod 777 sasldb svn.conf

将配置文件设置完全的访问权限,使能libsasl2.so可以正常读取

客户端通过svn co svn://192.168.1.122/test_repos/就可以正常下载了。客户端必须支持sasl2.

上传的文件

linux svn服务器普通passwd和sasl2配置的更多相关文章

  1. linux svn服务器搭建、客户端操作、备份与恢复

    Subversion(SVN)是一个开源的版本控制系統,管理着随时间改变的数据.这些数据放置在一个中央资料档案库中,这个档案库很像一个普通的文件服务器,它会记住每一次文件的变动,这样就可以把档案恢复到 ...

  2. 基于svnserve的SVN服务器(windows下安装与配置)

    基于svnserve的SVN服务器(windows下安装与配置) 基于svnserve的SVN服务器(windows下安装与配置)关键字: svn 安装SVNserve 从http://subvers ...

  3. Mac下SVN服务器环境的搭建和配置(除展示图片外,所有命令在Linux/Unix下适用)

    这几天领导没有安排工作,闲着没事就想把自己这两年做iOS开发时感觉知识有欠缺的地方想好好深入地补习一下,昨天和今天就计划好好学习下SVN和git的从创建和到原理,到命令,到界面的使用.一不小心被另一领 ...

  4. Linux SVN服务器的搭建配置及分支的创建与合并

    第一步:通过yum命令安装svnserve,命令如下: >yum -y install subversion 若需查看svn安装位置,可以用以下命令: >rpm -ql subversio ...

  5. linux svn服务器svnserve 安装配置

    svnserve 是一个轻量级的服务, 使用自定义的协议通过TCP/IP与客户端通讯.客户端通过由 svn:// 或者 svn+ssh:// 开始的URL访问svnserve服务器. svn服务器有两 ...

  6. Linux SVN 服务器

    一. SVN 简介 Subversion(SVN) 是一个开源的版本控制系統, 也就是说 Subversion 管理着随时间改变的数据. 这些数据放置在一个中央资料档案库 (repository) 中 ...

  7. linux SVN服务器创建版本库

    1.安装svn服务 # yuminstall subversion 2.新建一个目录用于存储SVN所有文件    # mkdir /home/svn 3.在上面创建的文件夹中为项目 project_1 ...

  8. linux svn 服务器搭建问题

    我的svn版本 svn, version 1.7.14 (r1542130) compiled Nov 20 2015, 19:25:09 Copyright (C) 2013 The Apache ...

  9. Linux svn服务器搭建

    一.安装 yum -y install subversion 二.建立版本库目录 mkdir /var/svn/svnrepos 三.创建svn版本库 svnadmin create /var/svn ...

随机推荐

  1. Windows消息拦截技术的应用(作者博客里有许多相关文章)

    民航合肥空管中心 周毅 一.前 言 众所周知,Windows程式的运行是依靠发生的事件来驱动.换句话说,程式不断等待一个消息的发生,然后对这个消息的类型进行判断,再做适当的处理.处理完此次消息后又回到 ...

  2. 超文本传输协议-HTTP/1.1

    超文本传输协议-HTTP/1.1(修订版) ---译者:孙超进本协议不限流传发布.版权声明Copyright (C) The Internet Society (1999). All Rights R ...

  3. Linux学习笔记6-Linux根目录下各个目录的作用

    /bin:存放最常用命令:  /boot:启动Linux的核心文件: /dev:设备文件: /etc:存放各种配置文件: /home:用户主目录: /lib:系统最基本的动态链接共享库: /mnt:一 ...

  4. MAC中在eclipse luna上搭建移动平台自己主动化測试框架(UIAutomator/Appium/Robotium/MonkeyRunner)关键点记录

    这几天由于原来在用的hp laptop的电池坏掉了,机器一不小心就断电.所以仅仅能花时间在自己的mackbook pro上又一次搭建整套环境.大家都知道搭建好开发环境是个非常琐碎须要耐心的事情,特别是 ...

  5. Oracle表的常用查询实验(一)

    Oracle表的常用查询实验(一) 练习1.请查询表DEPT中所有部门的情况. select * from dept; 练习2.查询表DEPT中的部门号.部门名称两个字段的所有信息. select d ...

  6. optimizer for eclipse--Eclipse优化,让你的Eclipse快来飞!

    官方网站:http://zeroturnaround.com/free/optimizer-for-eclipse/ infoq网址:http://www.infoq.com/cn/news/2015 ...

  7. Meta标签中的apple-mobile-web-app-capable属性及含义

    这meta的作用就是删除默认的苹果工具栏和菜单栏. content有两个值”yes”和”no”,当我们需要显示工具栏和菜单栏时,这个行meta就不用加了,默认就是显示.

  8. div滚动与控制

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head&g ...

  9. (八)Android广播接收器BroadcastReceiver

    一.使用Broadcast Reciver 1.右击java文件夹,new->other->Broadcast Receiver后会在AndroidManifest.xml文件中生成一个r ...

  10. JQuery(二)——简单动画效果

    上一篇博客总结了JQuery的一些基本知识,这篇博客重点从JQuery能够制造各种各样的网页效果方面来进行总结.总结一些常见的常用的基本效果的必备方法.从隐藏显示,淡入淡出,滑动,动画等几个方面来简单 ...