尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

Ubuntu 搭建 SASL+SVN 服务

Ubuntu 搭建 SASL+SVN 服务
📅 发布时间:2026/7/4 5:16:23

本文摘自qaq卟言博客。Ubuntu 搭建 SASL+SVN 服务

前言

前天直播写代码完事了后,向我的svn仓库提交完代码后,闲得无聊就看了一下仓库日志

发现有很多非法错误请求,于是直播的时候就把这个日志监控拦截也补充到我之前的监控中了
也就是在 卟言更新日志 页面中的2026-01-04中提到的实现拦截SVN非法请求
做完了这个功能后,于是乎我就去研究了一下官方的文档说明

选择服务器配置 - 《使用 Subversion 进行版本控制》
发现以下的内容


如果您试图为您的团队设置最简单的服务器,使用普通的 svnserve 安装是最简单、最快的途径。
但是请注意,您的存储库数据将通过网络以明文形式传输。
如果您的部署完全在您公司的局域网或 VPN 内,这不成问题。
如果存储库暴露于开放的互联网,您可能需要确保存储库的内容不敏感(例如,它只包含开源代码),
或者您需要付出额外努力来配置 SASL 以加密网络通信。


好家伙根本就没有加密数据内容,好家伙合着我一直都在裸奔😏,当然只是存储库数据,用户密码是不会传输的

参考:

svnserve,自定义服务器 - 《使用 Subversion 进行版本控制》

默认情况下,svnserve 服务器只知道如何发送 CRAM-MD5[61] 身份验证质询。
本质上,服务器向客户端发送少量数据。
客户端使用 MD5 哈希算法对数据和密码的组合创建指纹,然后将指纹作为响应发送。
服务器使用存储的密码执行相同的计算,以验证结果是否相同。实际密码不会在网络上传输。

然后我就按照官方的要求进行配置加密,官方的文档中有两种方法实现
第一种是通过代理比如通过apache或nginx等web服务器连接svn,架构为svn+apache+ldap的集成
第二种是通过svn+sasl+ldap的集成
第一种的话checkout地址都需要从svn://改成http(s)://那我全部拉仓库的客户端都要换太麻烦了
毕竟svn客户端在1.5版本后都支持sasl功能了,所以这里直接用第二个方法就够了

SASL

安装SASL

sudo apt install libsasl2-2 libsasl2-modules sasl2-bin

配置sasl

修改配置
sudo nano /etc/default/saslauthd

配置内容

START=yes
MECHANISMS="saslsb"

配置介绍

START: 是否在系统启动时自动启动
yes:启用
no:禁用
MECHANISMS: 认证机制
sasldb:直接用自带的数据库文件(/etc/sasldb2)来存储和验证用户密码
pam:用系统的 PAM(Pluggable Authentication Modules)进行认证,比如系统的用户密码
ldap:使用 LDAP 目录服务验证用户
shadow:直接读取 /etc/shadow 文件验证系统用户(需要 root 权限)
kerberos5:使用 Kerberos 进行认证

重启服务

/etc/init.d/saslauthd restart

创建用户

添加

sudo saslpasswd2 -c -u 卟言SVN版本库 buyan

删除

sudo saslpasswd2 -d -u 卟言SVN版本库 buyan
测试

testsaslauthd -u buyan -p 123456789 -r 卟言SVN版本库

联动svn

创建配置文件
sudo touch /usr/lib/sasl2/svn.conf
编辑配置文件
sudo nano /usr/lib/sasl2/svn.conf

配置内容

pwcheck_method: saslauthd
mech_list: CRAM-MD5 DIGEST-MD5 PLAIN

配置说明

pwcheck_method: 指定 SASL 验证密码的方式
auxprop:使用 辅助属性插件(Auxiliary Property Plugin) 获取来用户密码,插件由 auxprop_plugin 指定(比如说 sasldb)
saslauthd:直接使用 saslauthd 服务验证(在默认配置中/etc/default/saslauthd修改)。
pwcheck:使用 pwcheck 守护进程(已过时)。
shadow:直接读取系统 /etc/shadow 文件(需 root 权限)。
auxprop_plugin: 指定 auxprop 方式使用的具体插件
sasldb:使用 SASL 自带的数据库文件(通常是 /etc/sasldb2)存储用户密码
sql:使用 SQL 数据库(如 MySQL、PostgreSQL)来获取密码
ldapdb:使用 LDAP 目录服务来获取密码
mech_list: 指定 SASL 服务端支持的 认证机制列表
PLAIN: 明文传输用户名和密码(Base64 编码,本质仍是明文)
CRAM-MD5: 基于挑战 - 响应(Challenge-Response)机制,不传输明文密码
DIGEST-MD5: 类似 CRAM-MD5,但更复杂,支持会话安全(Session Security)

设置权限

sudo chown buyan:buyan /etc/sasldb2
sudo chmod 600 /etc/sasldb2

不设置可能会出现这种问题

SVN

配置SVN

安装步骤这里不再啰嗦了,可以查看ubuntu svn版本库搭建

修改配置

sudo nano /media/buyan/1/版本库/conf/svnserve.conf

内容

[sasl]
use-sasl = true
min-encryption = 0
max-encryption = 256

注意

# password-db = passwd这行保持注释掉的状态,不使用passwd文件
min-encryption因为sasl已经加密了如果像网上配置125可能会报Could not obtain the list of SASL mechanisms或者乱码

realm要跟sasl创建用户的仓库一致并且不能有空格

参考svnserve,自定义服务器 - 《使用 Subversion 进行版本控制》

一些警告:首先,确保saslpasswd2的“realm”参数与您在存储库的svnserve.conf文件中定义的 realm 相匹配; 如果它们不匹配,身份验证将失败。此外,由于 SASL 的缺陷,公共 realm 必须是一个不包含空格的字符串。 最后,如果您决定使用标准的 SASL 密码数据库, 请确保svnserve程序对该文件具有读取权限(如果使用 OTP 等机制,可能还需要写入权限)。

重启

killall svnserve

以用户身份运行不要使用sudo或管理员这样子限制对用户文件的读访问权限

svnserve –d –r /media/buyan/1/版本库

测试

额外

其实如果是很多人开发比如公司内部,可以配LDAP来配合SASL
LDAP协议的好处就是你公司的所有员工在所有这些工具里共享同一套用户名和密码,
来人的时候新增一个用户就能自动访问所有系统,走人的时候一键删除就取消了他对所有系统的访问权限
不过我自己一个人的SVN就不搞这些花里胡哨的了,因为就我一个用户

参考

选择服务器配置 - 《使用 Subversion 进行版本控制》

svnserve,自定义服务器 - 《使用 Subversion 进行版本控制》

相关

SVN无法编辑日志信息的解决方法

ubuntu svn版本库搭建

相关新闻

  • PM的游戏思维
  • Claude Sonnet 5 英语写作完全指南:从四六级到SCI论文,一套提示词方法论搞定所有层次
  • Spark Java终极指南:高效构建RESTful API的完整教程

最新新闻

  • AI新闻发布:大鱼营销助力外贸品牌把握海外信息传播新机遇
  • JupyterHub部署Docker故障排除:解决常见部署问题的完整清单
  • vivo 团队三轮优化 Elasticsearch 深度分页跳页:50 万数据跳页响应从 10 分钟降至 1 秒内
  • 终极指南:如何用免费开源工具深度优化AMD Ryzen处理器性能
  • HandPose X完整指南:从环境配置到实时手势识别的终极教程
  • 豆包vs DeepSeek办公实测:谁更适合日常生产力场景?

日新闻

  • STM32F745VG与MC6470 IMU的高性能姿态控制系统设计
  • 机器不消费,人何以生存
  • AI项目操作手册编写规范与最佳实践

周新闻

  • Windows字体自定义终极方案:No!! MeiryoUI完全指南
  • Deepin Boot Maker:告别命令行,3分钟制作Linux启动盘的智能解决方案
  • Plain Craft Launcher 2:重新定义你的Minecraft游戏体验

月新闻

  • 2026年6月公司网站搭建最新热门渠道测评:四大低成本/零代码平台对比+避坑
  • 【Linux】Linux arm 编译QT程序,出现expected “}“报错
  • 【MATLAB例程】四基站二维AOA定位与距离辅助增强对比仿真。基于角度观测和测距修正的固定目标平面定位精度分析

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号