Subversion 服务端口是什么
3690 是 Subversion 的 svnserve 服务默认端口:客户端用 svn:// 前缀连接,检出、提交、查看历史与分支操作都通过它完成。除这条路线外,SVN 还可以走 SSH(svn+ssh://)或 Apache 的 HTTP(S)(mod_dav_svn)。前者的传输是明文的,鉴权依赖 svnserve.conf 与密码文件;后者能自然继承 HTTPS 与统一认证,安全性更可控。
基本信息
| 服务 | Subversion(svnserve / svn://) |
|---|---|
| 协议 | TCP 3690 |
| 配置文件 | svnserve.conf、passwd、authz |
| 其他形态 | svn+ssh 走 SSH;http(s) 走 Apache |
| 安全等级 | 仅内网;优先使用加密形态 |
典型使用场景
- 老项目源码管理:集中式版本控制仍是团队主要工作流
- 外包交付:以只读账号提供代码浏览与检出
- 迁移评估:评估迁到 Git 的成本与历史保留方案
- 排障:匿名检出是否被允许、权限文件是否生效
- 安全盘点:确认仓库是否对非必要网段开放
仓库访问与探测
仓库访问与探测
svn info svn://repo.local/project
svn info https://svn.example.com/svn/project # Apache 模式
svn checkout svn+ssh://user@repo.local/var/svn/project # 经 SSH 加密
nc -zv repo.local 3690
ss -lntp | grep 3690服务端配置要点
服务端配置要点
[general]
anon-access = none # 禁止匿名访问
password-db = passwd
authz-db = authz # 按路径授权
realm = corp-repo
# 变更后需重启 svnserve 生效三种访问方式对照
| 方式 | 端口 | 特点 |
|---|---|---|
| svn:// | 3690 | 明文传输,配置简单 |
| svn+ssh:// | 22 | 复用 SSH 加密与账号体系 |
| https:// | 443 | Apache 模式,便于统一认证与外网发布 |
| 文件共享式 | 无端口 | 仅限本机或挂载卷,不适合协作 |
迁移与备份:svnadmin hotcopy 可产出完整副本,配合 svnadmin verify 定期校验仓库完整性;准备迁到 Git 时可用通用迁移工具保留历史,先做小仓库试点再全量切换。
匿名可读写配置长期无人维护是这类仓库最常见的问题:源码被改动、历史被覆盖都可能长期无人察觉,因此除了关闭匿名访问,还要对提交与权限变更留有审计记录。
加固建议
- 关闭匿名访问,按路径与角色分配写权限
- 对外发布走 HTTPS 形态并限制来源
- 定期备份并验证可恢复性
- 结合钩子对提交做基本校验
巡检与加固要点
- 确认服务只对内网开放且已关闭匿名访问
- 定期做仓库完整性校验,并验证备份可恢复
- 提交权限按模块划分,减少误覆盖
- 迁移计划先小范围试点,确认历史与钩子行为一致
权限模型提示:路径级授权文件决定谁能读写哪个目录,改动后需重启服务生效;只改账号密码文件而漏改授权文件,常出现“能登录但无法提交”的现象。