Jump to content
新域网络技术论坛

FREEBSD中配置subversion使用SSH方式登录


Jamers
 Share

Recommended Posts

SubVersioN(以下简称SVN),是一个版本控制工具,它可以实现了解何时修改过哪些地方,程序开发中应用非常多。关于它的特性只是简单说明一下,需要了解它的可以到下列网址上去了解。http://baike.baidu.com/link?url=h9cklVJQSas0d9sy-RaBOPxPNusbEbGZHhuYptScomOl2_2TtmQk4qOr_E3WcF4WWCWGEcl41g5GdpFwFa7uiK

 

当然它也不是没有缺点,svn的验证方式居然是明文,如果我们把服务器放在公网上,然后更新提交相应的更新,每次提交都会面临帐号被盗的风险,一般源代码是极为重要的东西,一旦泄露后果不堪设想。所以我们想用其它更加安全的方式进行。才有了此文章,本文内容全部通过实际验证,测试相关版本情况如下:

 

服务端:

FreeBSD freebsd 10.1-RELEASE FreeBSD 10.1-RELEASE #0 r274401: Tue Nov 11 21:02:49 UTC 2014     root@releng1.nyi.freebsd.org:/usr/obj/usr/src/sys/GENERIC  amd64

subversion 1.8.10

 

客户端:

putty 0.63

TortoiseSVN 1.8.8, Build 25755 - 64 Bit , 2014/08/10 14:44:06

 

首先服务器上安装subversion,我采用ports安装,不多说了。

cd /usr/ports/devel/subversion
make install

安装完成,建立相关帐号以及目录

pw groupadd svn
pw useradd -G svn svn
mkdir -p /home/svn/repos
chown -R svn:svn /home/svn

svnadmin create /home/svn/repos
chmod -R 777 /home/svn/repos

修改相应配置文件,并启动svnserve

ee /home/svn/repos/conf/svnserver.conf
#修改配置文件
anon-access = none
auth-access = write
#########################
#此内容仅暂供测试svn直接连接,测试完成后请删除
password-db = passwd
#########################
authz-db = authz

ee /home/svn/repos/conf/authz
#修改身份验证信息
[/]
jamers=rw
#jamers有读写权限

#########################################
ee /home/svn/repos/conf/passwd
#在[users]下添加密码信息
jamers = testtest
#########################################

ee /etc/rc.conf
#添加下列内容
svnserve_enable="YES"
#默认数据路径为:/home/svn/repos

#可以启动SVN服务器了
/usr/local/etc/rc.d/svnserve start

svnserver已经安装完成,默认情况下可以通过svn://xx.xx.xx.xx进行访问了,但是svn身份验证通常是明文传输,如果放在服务器上非常不安全。
测试完成请将svnserver.conf中配置的password-db = passwd注释掉,然后重启svnserve,这样正常的svn连接方式就无效了。

 

下载putty http://the.earth.li/~sgtatham/putty/latest/x86/putty.zip
mkdir ~/.ssh
用PUTTYGEN.EXE生成私钥和公钥,生成完后,将上面文本框中内容复制下来,写入.ssh目录下的authorized_keys里去
把私钥和公钥保存起来备用。
测试使用生成的私钥能否登录系统。确定无误就退出。

windows中的SVN客户端设置ssh client:我这边的值是:"E:\Program Files\TortoiseSVN\bin\TortoisePlink.exe"
连接前打开PUTTY中的PAGEANT.EXE,如果中间没有私钥请导入对应密钥,每次需要连接SVN的时候都必须有密钥在里面。

链接部分使用此类型:
 

svn+ssh://jamers@192.168.1.50:/home/svn/repos

这样,SVN的密码就不会被泄露了,以实现安全。

Link to comment
Share on other sites

实际测试中发现有点小问题,不过不影响正常使用,subversion使用到 cyrus-sals2 模块,此模拟运行时会去查找sql验证模式,由于未配置会有相应的错误提示。

Dec 23 16:14:19 freebsd svnserve: sql_select option missing
Dec 23 16:14:19 freebsd svnserve: auxpropfunc error no mechanism available

找找看能不能去除此错误提示。

Link to comment
Share on other sites

经过查看源代码,发现因为sasl2主程序中有调用相应插件配置文件,如果未找到sql_select设置直接报上面的错误,原因找到了,我们去建一个假的配置文件吧。

根据源代码以及相关说明文件,发现配置文件目录在 /usr/local/etc/sasl2,这就好办了。

ee /usr/local/etc/sasl2/svn.conf
#没有文件就新建一个 下面的语句并没有使用只要随便设个值就行了
sql_select = select  password from table where user='%u'

重新启动svnserve,这样就没有错误提示了,PASS!

Link to comment
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
 Share

×
×
  • Create New...