CVS pserver 版本库服务
2401 是 CVS 的 pserver 协议端口,IANA 登记名为 cvspserver。CVS 是上世纪的集中式版本控制工具,在没有 SSH 通道的环境里,团队用 pserver 模式让客户端用账号口令直连仓库读写代码。口令在传输中只做弱混淆而不是加密,嗅探即可还原,因此它长期是源码泄露的常见入口。
基本信息
| 服务 | CVS pserver(cvspserver) |
|---|---|
| 协议 | TCP |
| 认证方式 | 口令明文交互,仅做弱混淆 |
| 访问模式 | 读写账号与匿名只读账号 |
| 安全等级 | 禁止跨网段开放 |
典型使用场景
- 老项目仍在用 CVS,需要保留 pserver 供构建机检出代码
- 排查检出失败、认证被拒时确认 2401 连通性与仓库路径
- 资产梳理时把 2401 列入待迁移的历史遗留服务清单
- 安全加固时核对匿名只读账号的权限范围
- 规划源码平台迁移,评估还有多少脚本硬编码了 pserver 地址
客户端用法与暴露面确认
客户端用法与暴露面确认
cvs -d :pserver:user@repo.example.com:/cvsroot login # 登录
cvs -d :pserver:user@repo.example.com:/cvsroot co module # 检出模块
nc -zv repo.example.com 2401 # 从网络侧确认可达
ss -lntp | grep ':2401 ' # 服务端确认监听pserver 与替代方案
| 方案 | 加密能力 | 现状 |
|---|---|---|
| CVS pserver | 明文口令弱混淆 | 历史遗留,仍有少量在用 |
| CVS over SSH | SSH 通道全程加密 | 保留 CVS 时的过渡做法 |
| SVN | 支持 https 与 svn+ssh | 集中式版本控制的后继者 |
| Git | 支持 ssh 与 https | 当前主流,生态完整 |
若必须保留 pserver,应把来源限制在构建机与办公网固定网段,并收紧匿名账号权限。更彻底的做法是改为 CVS over SSH,或直接迁移到 Git、SVN;留着一个匿名可读的老仓库,等于长期开放源码下载。
凭证残留:pserver 模式下客户端会把经过弱编码的口令存进 .cvspass 文件,机器跨网复制或镜像备份都会把凭证一起带走。清理历史系统时别只删仓库,这类文件也要一并处理。
常见误解是把 2401 当成 SSH 的替代端口:CVS 的 pserver 与 CVS over SSH 是两种不同接入方式,后者复用 22 端口。排查时先看仓库地址前缀,写的是 :pserver: 还是 :ext:,一眼就能确定流量走哪条通道。