Linux系统安装SVN服务端结合内网穿透实现远程访问本地svn资料库

发布时间 - 2025-07-22 00:00:00    点击率:

文章目录

前言1. 在Ubuntu上安装SVN服务2. 配置文件的修改2.1 编辑svnserve.conf文件2.2 编辑passwd文件2.3 编辑authz文件3. 启动SVN服务4. 实现内网穿透4.1 安装cpolar内网穿透工具4.2 设置隧道以映射本地端口5. 测试通过公网访问6. 配置固定的公网TCP端口地址6.1 保留固定的公网TCP端口地址6.2 设置固定的公网TCP端口地址7. 使用固定TCP端口地址远程访问SVN服务前言随着文档资料的增多,将所有资料都存放在自己的电脑上容易引起混乱,也不利于分享。因此,考虑将资料上传到SVN进行统一管理,这样其他人也能方便地查阅各种资料。

当SVN安装在局域网内时,远程访问资料库或代码会受到限制。为了能够从公共网络访问内网的SVN资料库,[cpolar](cpolar官网-安全的内网穿透工具 | 无需公网ip | 远程访问 | 搭建网站)能够很好地解决这一需求。cpolar是一个能将内网服务暴露到公网进行访问的工具。

SVN分为服务端和客户端,服务端主要用于数据资料的存储,客户端主要是图形化工具连接服务端获取数据资料。以下将介绍在Ubuntu系统上安装服务端,并通过客户端远程访问。

  1. 在Ubuntu上安装SVN服务通过命令行输入以下命令进行安装:
sudo apt install subversion

20250131111701查看SVN版本,以确认安装是否成功:

svnserve --version

20250131111702创建版本库,执行以下系列命令:

cd /optsudo mkdir svncd svnsudo mkdir repository

创建好后,输入以下命令创建仓库:

sudo svnadmin create /opt/svn/repository

20250131111703创建成功后,在repository目录下会发现一系列文件,其中:

conf文件夹下存放配置文件,包括SVN用户名、权限和密码;db文件夹内包含上传到SVN服务器上的文档、代码等数据的不同版本。注意需要对db文件夹设置权限,否则客户端可能无法连接SVN服务器。

20250131111704输入以下命令,对db文件夹设置权限,设置成功后db文件夹会变成绿色:

sudo chmod -R 777 db

202501311117052. 配置文件的修改首先修改repository文件下的conf文件夹内的文件。

2.1 编辑svnserve.conf文件这个文件主要设置我们的SVN访问方式。输入编辑命令:

sudo vim svnserve.conf

i键进入编辑模式,解除四个参数的#号注释。

20250131111706然后按Esc键退出编辑,输入:wq保存并退出。

2.2 编辑passwd文件这个文件主要是添加用户名和密码。输入命令进入编辑:

sudo vim passwd

i键进行编辑,添加以下信息,账号密码可以自行定义:

20250131111707添加完成后按Esc键退出,输入:wq保存并退出。

2.3 编辑authz文件这个文件主要是对登录用户的权限进行管理。输入以下命令进入编辑:

sudo vim authz

i键进行编辑,添加如下信息:

20250131111708然后按Esc键退出编辑,输入:wq保存并退出。

  1. 启动SVN服务输入以下命令启动SVN:
sudo svnserve -d -r /opt/svn/
  1. 实现内网穿透我们在本地Ubuntu虚拟机上安装了SVN服务端,但目前只能在局域网络下访问,离开了局域网将无法连接SVN。然而,我们可以通过cpolar来实现公网访问,突破局域网的限制,无需公网IP,无需设置路由器。

4.1 安装cpolar内网穿透工具支持一键脚本安装,输入以下命令:

curl -L https://www.cpolar.com/static/downloads/install-release-cpolar.sh | sudo bash

在cpolar官网后台登录后,点击左侧的验证,查看自己的认证token,然后将token贴在命令行中:

cpolar authtoken xxxxxxx

20250206171241248向系统添加服务:

sudo systemctl enable cpolar

启动cpolar服务:

sudo systemctl start cpolar

4.2 设置隧道以映射本地端口成功启动cpolar服务后,在浏览器中访问本地9200端口【https://www./link/4b0634bf8e6c9d0289c1102ced741317 web UI管理界面。

登录成功后,点击左侧仪表盘的隧道管理——创建隧道,创建一个tcp协议的隧道指向本地3690端口:

隧道名称:可自定义,注意不要与已有的隧道名称重复协议:tcp本地地址:3690域名类型:免费选择随机域名地区:选择China VIP点击创建

20250131111709隧道创建成功后,点击左侧的状态——在线隧道列表,可以看到刚刚创建的隧道已生成相应的公网地址,将其复制下来。

202501311117105. 测试通过公网访问从官方网站下载SVN客户端:https://www./link/92e2febe8d6183b8026d49448c382d0e

20250131111711SVN安装完成后,在桌面右键点击svncheckout,输入我们复制的cpolar公网地址,然后点击ok

20250131111712输入我们前面创建的账号密码。

20250131111713接着右键点击svn update,没有出现error即表示连接成功。

202501311117146. 配置固定的公网TCP端口地址由于以上使用cpolar所创建的隧道使用的是随机公网地址,该地址为随机临时地址,24小时内会发生变化,不利于长期远程访问。

为了更好地连接,我们可以为其配置二级子域名,该地址为固定地址,不会随机变化。

6.1 保留固定的公网TCP端口地址登录cpolar官网,点击左侧的预留,选择保留的TCP地址,我们先为远程SVN保留一个固定端口地址。

地区:选择China VIP描述:即备注,可自定义填写点击保留

20250131111715地址保留成功后,系统会生成相应的固定公网地址,将其复制下来。

202501311117166.2 设置固定的公网TCP端口地址在浏览器中访问9200端口,https://www./link/63baaa24b01ab9ada621af6ff02c2e2e web ui管理界面,点击左侧仪表盘的隧道管理——隧道列表,找到svn隧道,点击右侧的编辑。

20250131111717修改隧道信息,将保留成功的固定tcp地址配置到隧道中。

端口类型:修改为固定tcp端口预留的tcp地址:填写保留成功的地址点击更新

20250131111718隧道更新成功后,点击左侧仪表盘的状态——在线隧道列表,找到svn隧道,可以看到公网地址已经更新为固定tcp地址。

202501311117197. 使用固定TCP端口地址远程访问SVN服务右键打开relocate

20250131111720修改连接地址为固定tcp的地址,修改完后点击OK。

20250131111721接着右键点击svn update,没有出现error即表示连接成功。

20250131111722


# linux  # 浏览器  # 电脑  # 工具  # 系统安装  # Error  # Token  # svn  # http  # https  # ubuntu  # ui  # 内网  # 远程访问  # 服务端  # 客户端  # 自己的  # 配置文件  # 官网  # 右键点击  # 主要是  # 将其 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel如何使用Guzzle调用外部接口_Laravel发起HTTP请求与JSON数据解析【详解】  Laravel怎么实现验证码(Captcha)功能  Laravel如何生成和使用数据填充?(Seeder和Factory示例)  Laravel怎么实现观察者模式Observer_Laravel模型事件监听与解耦开发【指南】  laravel怎么配置Redis作为缓存驱动_laravel Redis缓存配置教程  如何快速生成凡客建站的专业级图册?  Laravel Session怎么存储_Laravel Session驱动配置详解  Laravel怎么自定义错误页面_Laravel修改404和500页面模板  零基础网站服务器架设实战:轻量应用与域名解析配置指南  Angular 表单中正确绑定输入值以确保提交与验证正常工作  如何实现javascript表单验证_正则表达式有哪些实用技巧  Laravel如何发送系统通知?(Notification渠道示例)  Linux安全能力提升路径_长期防护思维说明【指导】  制作旅游网站html,怎样注册旅游网站?  Laravel如何升级到最新的版本_Laravel版本升级流程与兼容性处理  Laravel如何使用Service Container和依赖注入?(代码示例)  Linux网络带宽限制_tc配置实践解析【教程】  HTML 中动态设置元素 name 属性的正确语法详解  Laravel怎么解决跨域问题_Laravel配置CORS跨域访问  Gemini手机端怎么发图片_Gemini手机端发图方法【步骤】  Laravel怎么使用Intervention Image库处理图片上传和缩放  如何在宝塔面板创建新站点?  图片制作网站免费软件,有没有免费的网站或软件可以将图片批量转为A4大小的pdf?  node.js报错:Cannot find module 'ejs'的解决办法  ChatGPT回答中断怎么办 引导AI继续输出完整内容的方法  网站制作企业,网站的banner和导航栏是指什么?  无锡营销型网站制作公司,无锡网选车牌流程?  中山网站制作网页,中山新生登记系统登记流程?  php静态变量怎么调试_php静态变量作用域调试技巧【解答】  Laravel Blade模板引擎语法_Laravel Blade布局继承用法  小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?  关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)  Zeus浏览器网页版官网入口 宙斯浏览器官网在线通道  百度浏览器ai对话怎么关 百度浏览器ai聊天窗口隐藏  详解Nginx + Tomcat 反向代理 如何在高效的在一台服务器部署多个站点  Laravel如何实现API资源集合?(Resource Collection教程)  Laravel如何处理文件上传_Laravel Storage门面实现文件存储与管理  如何挑选高效建站主机与优质域名?  Laravel Eloquent关联是什么_Laravel模型一对一与一对多关系精讲  Javascript中的事件循环是如何工作的_如何利用Javascript事件循环优化异步代码?  Windows驱动无法加载错误解决方法_驱动签名验证失败处理步骤  javascript日期怎么处理_如何格式化输出  Laravel怎么多语言本地化设置_Laravel语言包翻译与Locale动态切换【手册】  网页设计与网站制作内容,怎样注册网站?  详解jQuery停止动画——stop()方法的使用  个人摄影网站制作流程,摄影爱好者都去什么网站?  Android滚轮选择时间控件使用详解  Laravel N+1查询问题如何解决_Eloquent预加载(Eager Loading)优化数据库查询  深圳网站制作平台,深圳市做网站好的公司有哪些?  ,怎么在广州志愿者网站注册?