查看SVN服务器端口最直接的办法:在SVN服务器本机打开命令提示符,输入netstat -ano | findstr 3690,能看到LISTENING状态就说明SVN服务正在运行,端口就是3690;如果你的SVN地址里带了别的数字,比如svn://192.168.1.10:8443,那冒号后的8443就是端口。
SVN本身不像Web服务那样会主动告诉你端口,很多人第一次接触时容易懵,写这篇东西,就是想把各种情况下查看端口的路子都捋一遍,从最简单的本机查看,到远程确认,再到改端口,一条龙讲透。
常规svn服务器端口怎么查看
SVN默认端口是3690,这是官方定的,行业共识认为绝大多数没改过的SVN服务都跑在这个端口上,但在实际环境里,改端口的情况相当常见,尤其是公司内网为了避开冲突或者安全考虑,会用8443、8080这类端口。
在Windows服务器本机用netstat查看
这是最常用的场景,SVN装在哪台机器上,就在哪台机器上操作,Windows系统自带的netstat命令就够用,不需要额外装软件。
具体步骤如下:
- 按
Win+R打开运行窗口,输入cmd回车,打开命令提示符。 - 输入
netstat -ano | findstr 3690回车。 - 看输出结果,如果有类似
TCP 0.0.0.0:3690 0.0.0.0:0 LISTENING 12345的行,说明SVN服务正在监听3690端口,最后一列的数字是进程PID。 - 如果没输出,说明SVN服务当前没在这个端口上跑,或者服务没启动。
如果你不确定SVN用的哪个端口,可以先看所有正在监听的端口,再对照进程名确认,输入 netstat -ano | findstr LISTENING,会显示所有监听端口和对应PID,接着输入 tasklist | findstr 12345(把12345换成实际PID),看这个PID是不是svnserve.exe或者httpd.exe。
用sc命令查SVN服务的可执行文件路径
有些SVN服务是以系统服务方式运行的,比如VisualSVN Server,这时候可以用sc命令查得更明白。
- 命令提示符里输入
sc queryex svnserve回车,注意服务名不一定是svnserve,可能是VisualSVNServer,可以用sc query state= all | findstr /i "svn"先找。 - 找到服务名后,输入
sc qc 服务名回车,看BINARY_PATH_NAME那行,路径里通常能看到配置文件的引用或者端口参数。
在Linux服务器上查看SVN端口
Linux上跑SVN同样常见,操作思路和Windows类似但命令不同。
- 输入
netstat -tlnp | grep 3690或ss -tlnp | grep 3690,看输出里哪个进程在监听。 - 如果服务名带了svn字样,
ss -tlnp | grep svn,能直接看到进程号和完整命令,如果不确定端口,输入看全部监听端口,再找svnserve相关的进程。
netstat -tlnp
客户机远程确认svn端口号在哪里看
不在服务器旁边,只有个SVN地址,这种情况下确认端口号的方式更简单,地址本身就藏着答案。
从SVN仓库地址直接读出端口
拿到SVN地址先别慌,端口大概率就在URL里,仓库地址一般长这样:
svn://192.168.1.10/svn/project没有端口号,那就是默认的3690。svn://192.168.1.10:8443/svn/project冒号后的8443就是端口号。http://192.168.1.10/svn/project走Apache方式,默认80端口。https://svn.example.com/svn/project走SSL加密,默认443端口。
在TortoiseSVN里右键点击已经checkout出来的工作副本文件夹,选择 TortoiseSVN → Repo-browser,地址栏上方会显示完整URL,其中就包含端口信息。
用telnet命令测试确认端口是否开放
知道端口数后,可以用telnet验证一下服务器端口是不是真的通,在Windows命令提示符或Linux终端里输入:
telnet 192.168.1.10 3690
如果窗口变黑或显示连接到端口,说明端口通,如果提示连接失败或者直接退回,可能是防火墙挡了,也可能是服务没启动,注意Windows 10以上系统默认没装telnet客户端,会提示不是内部或外部命令,需要先启用Telnet客户端功能,或者用PowerShell里执行 Test-NetConnection 192.168.1.10 -Port 3690 替代。
svn服务端端口配置的实际操作场景
日常运维中,更多遇到的是怎么改端口或者确认配置后端口是哪个,这部分讲清楚配置文件的来龙去脉。
独立svnserve方式下端口在配置文件里
用svnserve搭的独立服务,端口配置在conf目录下的svnserve.conf文件里,具体操作路径:
- 找到SVN仓库根目录,通常是
D:Repositories或/opt/svn。 - 进入子目录
conf,用记事本或vim打开svnserve.conf。 - 找
[general]节点下的port参数,如果这行被注释了(前面有#号),说明当前用的是默认端口3690;如果想改端口,把注释删掉,改成port = 8443保存。 - 改完重启SVN服务,在服务管理器里找到svnserve服务右键重启,或者用
svnserve -d -r 仓库路径 --port 8443手动启动。
这里提醒一句,svnserve.conf里还有个 anon-access 和 auth-access 参数,跟端口无关,别混淆,端口参数是独立一行。
基于Apache的SVN服务端口取决于HTTP配置
有些团队用Apache或VisualSVN Server集成的HTTP方式,这时候SVN的端口由Web服务决定,不再是3690。

- 纯Apache环境,在
httpd.conf或conf/extra/httpd-ssl.conf里找Listen指令,后面跟的数字就是端口,常见是80。 - VisualSVN Server环境,打开VisualSVN Server Manager界面,右键服务器名选
Properties,看Server URL后面跟的端口,或者点Network标签页,能看到当前端口设置。 - 用Apache和SVN结合,通常会有个
mod_dav_svn模块配置,里面SVNPath和AuthType等参数,端口本身不在这个文件里,还是归HTTP服务管。
防火墙和路由器上SVN端口排查
如果客户端连不上,但服务器配置看着没问题,十有八九是防火墙或路由器端口没放行。
- Windows防火墙,打开控制面板 → Windows Defender防火墙 → 高级设置 → 入站规则,看有没有针对3690或自定义端口的放行规则,没有就新建规则,选端口,协议类型选TCP,特定本地端口填3690。
- Linux的iptables或firewalld,
firewall-cmd --permanent --add-port=3690/tcpfirewall-cmd --reload放行。 - 路由器NAT映射场景,公司内网SVN要外网访问,登录路由器后台,在端口转发或虚拟服务器设置里确认内外网端口映射对,很多情况是外网端口和内网端口不一致,比如内网3690映射到外网7100,这时候从外网访问就得用7100。
SVN服务端口相关的常用排查方式
端口问题不只是查看那么简单,遇到连不上的情况时,有几套固定排查法值得写下来。
多仓库环境下的SVN端口确认
单仓库环境端口好找,但不少公司一台服务器上跑了好几个仓库,端口确认需要多留个心眼。
- 用多个svnserve进程对应不同仓库时,每个进程都用默认3690的话会冲突,所以第二个进程启动时一般会指定
--port 3691或更高端口。 - 在命令行启动时指定了
-r参数指向不同仓库根目录,端口不同,这时候客户端访问的URL里端口就各不相同,查的时候先netstat -ano | findstr svnserve看几个svnserve进程分别占着哪些端口,再用tasklist /fi "pid eq 具体PID"或Linux的ps -ef | grep svnserve定位每个进程的--port参数,能精确匹配上。
如何通过svn info判断SVN端口
已经checkout了本地工作副本的,用svn info就可以了。
在本地项目目录下右键 → TortoiseSVN → Show log 或 Relocate,弹出的窗口会显示仓库地址,端口一目了然,也可以在命令行工具里cd到项目目录,输入 svn info 回车,输出中的 URL: 一行就看得到端口,这个方法不依赖服务器,走到哪儿都能用。

Windows服务模式下SVN端口表现差异
注意一个细节,以服务方式运行的SVN端口和以命令行前台方式运行的,查看端口方式没有本质区别,但服务模式下改参数的地方不一样,服务模式下用 sc config svnserve binPath= "D:svgbinsvnserve.exe --service -r D:Repositories --port=12345" 改端口,改完必须重启服务,前台命令行模式直接Ctrl+C停止后重新启动即可,不用重启系统。
SVN端口变更后客户端适配问题
端口改掉后最常遇到的问题就是客户端还保留着旧地址,这类问题得能迅速反应过来。
修改了SVN服务器端口后,原本地副本执行update或commit操作会报 Unable to connect to a repository at URL,这时需要右键工作副本,选 TortoiseSVN → Relocate,把URL里的旧端口换成新端口,一路确认后,重新输入账号密码即可,如果地址是从svn://协议改成http协议,Relocate也支持,但要注意Apache配置里限制的访问路径必须对得上。
命令行下的工具配置也是一样,全局配置文件中,旧端口失效后svn的交互式连接会提示认证失败,config文件中设置的servers相关配置也要同步修改,这个点很容易被忽略。
核心问题解答
svn服务器端口是什么怎么查最快
最快方法是看SVN访问地址本身,直接锁定冒号后的端口;其次是在服务器本机用netstat和findstr组合命令查监听状态;这并不是什么复杂行情,掌握这几种排查路径,基本能应对绝大部分SVN端口疑问。
为什么改了svnserve.conf的port参数后端口没变
改完 conf/svnserve.conf 里的 port 参数后必须重启 svnserve 服务,否则配置不生效,Windows服务管理器里右键重启,或命令行用 net stop svnserve && net start svnserve,还有一种可能是重启了但服务是以命令行方式跑的,配置文件里的参数没被读取,要用启动命令的 --port 参数指定的端口,另外VisualSVN Server环境下svnserve.conf的port参数不生效,端口认的是管理器里的设置。
访问SVN时显示连接拒绝但端口显示LISTENING
端口在监听但连不上,多数是防火墙拦截或者访问权限配置问题,先ping通不通,通的话tenlet端口能通说明网络层面正常,再查svnserve.conf里的 anon-access 和 auth-access 参数是否设置成none或者对某些IP段拒绝,如果telnet也通但TortoiseSVN连不上,看下TortoiseSVN设置的网络代理,进TortoiseSVN → Settings → Network,确认代理服务器未启用或代理地址正确,还有种情况是服务器上装了安全软件拦截了svnserve进程的对外连接,这类问题排查时先关掉安全软件试试能很快定位。
图片来源于AI模型,如侵权请联系管理员。作者:酷小编,如若转载,请注明出处:https://www.kufanyun.com/ask/810983.html


评论列表(2条)
读了这篇文章,我深有感触。作者对输入的理解非常深刻,论述也很有逻辑性。内容既有理论深度,又有实践指导意义,确实是一篇值得细细品味的好文章。希望作者能继续创作更多优秀的作品!
这篇文章写得非常好,内容丰富,观点清晰,让我受益匪浅。特别是关于输入的部分,分析得很到位,给了我很多新的启发和思考。感谢作者的精心创作和分享,期待看到更多这样高质量的内容!