vscode远端编程 终极方案
写在最前面(为了过审核):本文所提技术不需要访问任何国外的VPN,VPN不等同于翻墙,本文中提到的VPN指的是校园网。
很多时候,我们会需要通过笔记本连服务器进行代码调试,但如果要从校外或是公司外连机房,有时会需要经过多次网络跳转,例如:你的PC -> 学校VPN -> 机房某网段跳板机 -> 远端目标机。在这种情况下,最简单的方法是用vim等终端工具进行编程,但现在的编程工具发展的如此迅速,尤其是vscode这类自定义程度很高的工具的出现,让我决定花一些时间思考如何让remote编程变得更愉快。经过几小时的试验,最终得到了一个我比较喜欢的方案,与大家分享。
首先展示一下最终效果:
远端服务器上的vscode的编程体验与local模式几乎一致,有个缺点是无法通过EXTENSIONS市场来一键安装插件(替代方案是利用VSIX,参考链接)。
需要用到的工具:
- Windows系统的电脑,无论配置多低都ok,平板也ok,只要能运行MobaXterm就行,作为本地设备;
- MobaXterm,作为隧道工具(就是因为这个软件只支持windows系统所以才限定了OS,当然还有其他的tunnel方案可以绕开OS的限制,但比较繁琐,在这里就不铺开介绍了);
- Code-server,开源软件,远端部署,直接下载到远端目标机上,codeserver的下载链接。一般来说,如果远端是普通的Intel 64位芯片,就选择下载amd64版本的tar.gz。
- Tmux工具,在远端用yum(centos)或者apt-get(ubuntu)安装一下就行,主要是为了便于后台运行和管理。
- 浏览器,PC上一般都有。
具体步骤:
- 远端目标机部署code-server。
- 解压codeserver;
tar -zxvf ./code-server-3.8.0-linux-amd64.tar.gz
- 把code-server的bin路径添加到~/.bashrc的PATH中,方便以后一键启动;
- 先运行一下bin里面的code-server,然后ctrl+C退出程序,此时会在你的用户目录里生成一个配置文件,路径是~/.config/code-server/config.yaml
- 配置config.yaml文件,修改bind-addr成目标机IP:你想要的codeserver端口(要用实际的IP,别用localhost或者127.0.0.1),修改password成便于记忆的,用于后面登录验证;
- 在远端运行tmux,进入后运行code-server(如果没有添加到PATH里的话,就在对应bin目录下运行),成功的话会看到下方红框内的IP和端口已经变成了你设置的值;
- Detach tmux (ctrl+b d),退到外面来,接下来就没远端服务器什么事了。
- 解压codeserver;
- 在本地开启校园网VPN,连进校园网。我校用的是anyconnect,直接照常连上就行。
- 在MobaXterm上设置Tunnel,配置如下,端口号a可以自定义: -> ->
- 打开浏览器,输入127.0.0.1:端口号a,如果成功的话会让你输入一开始设置的密码。
- 开始你的远端编程吧~ 只要有浏览器就行!
使用Tips:
- 保持MobaXterm运行,tunneling别关别断;
- 如果server崩了,可以用MobaXterm以SSH的方式登录远端,attach上Tmux,重启一下code-server。
- 写代码时随手保存,避免网络问题导致代码丢失。
20210109更新:
问题1:用久了terminal以及右边的滑动栏可能会花屏
把edge换成Chrome浏览器,会稳定很多。强烈建议用Chrome,可以避免很多小问题。浏览器F11进全屏模式有奇效,有双屏配合就更好了。
问题2:MobaXterm的Tunneling连上马上断开的问题
断开网页,关闭Tunnel,tmux关闭code-server。在目标机上用netstat -ano | grep PORT 查看端口占用情况,等待一会儿,等输出显示为空时,重启code-server,重连Tunnel,打开网页,即可。
改进1:现在不需要MobaXterm也可以建立Tunnel了!
这个是因为我之前没想到可以直接在跳板机上设置端口转发。方法很简单:在跳板机上开一个tmux,然后用ncat建立转发即可。代码:
ncat --sh-exec "ncat 目标机IP 目标机端口" -l 跳板机端口 --keep-open
这样设置好后,直接不用mobaxterm,在浏览器中输入跳板机IP:跳板机端口,就可以直接连到目标机了,一步到位。
参考链接:
code-server的公司官网:https://coder.com/
https://zhuanlan.zhihu.com/p/62570740
https://github.com/cdr/code-server/releases
https://github.com/cdr/code-server/blob/v3.8.0/doc/install.md
vscode远端编程 终极方案相关推荐
- 调用父级方法_通信:找到任意组件实例的findComponents系列方法,5个终极方案
已经介绍了两种组件间通信的方法:provide / inject 和 dispatch / broadcast.它们有各自的使用场景和局限,比如前者多用于子组件获取父组件的状态,后者常用于父子组件间通 ...
- ubuntu 运行c++_06_Linux下VSCode简单编程(远程开发WSL_Ubuntu_18.04) | C语言入门
06_Linux下VSCode简单编程(远程开发WSL_Ubuntu_18.04) 本系列主题 Linux下C语言彩色控制台编程实践_基于gcc,gdb,VSCode,git和WSL_Ubuntu_1 ...
- 反爬终极方案总结---字体反爬
最近临时受命,要针对采集我司网站的爬虫进行反制.虽然不太熟悉这个领域,但既然分到咱这儿了,那就上呗,有啥说的,谁让咱是"全栈工程师"呢(牛逼吹的大了点). 原本公司已经有了一套字体 ...
- 单点登录终极方案之 CAS 应用及原理
转载自 单点登录终极方案之 CAS 应用及原理 Cookie的单点登录的实现方式很简单,但是也问题颇多.例如:用户名密码不停传送,增加了被盗号的可能.另外,不能跨域! 1.基于Cookie的单点登录 ...
- STM32H743+CubeMX-双路FDCAN同时工作的终极方案(裸机)
文章目录 一.前言 二.CubeMX 2.1.RCC 2.2.Clock Configuration 2.3.CORTEX_M7 2.4.DEBUG 2.5.FDCAN1 2.6.倒回去配置一个FDC ...
- STM32H743+CubeMX-两路FDCAN同时工作的终极方案(RTX5)
文章目录 一.前言 二.CubeMX 2.1.Clock Configuration 2.2.FDCAN1 FDCAN2 三.代码 3.1.添加BSP fdcan.c 3.3.main.c 四.调试F ...
- 【干货】JS版汉字与拼音互转终极方案,附简单的JS拼音输入法
转自:小茗同学的博客:小茗同学博客 网上关于JS实现汉字和拼音互转的文章很多,但是比较杂乱,都是互相抄来抄去,而且有的不支持多音字,有的不支持声调,有的字典文件太大,还比如有时候我仅仅是需要获取汉字拼 ...
- Android 跳转权限设置界面的终极方案
转载请标明出处,维权必究:https://www.cnblogs.com/tangZH/p/10338377.html 有时候APP需要获取某些权限,要让用户手动打开,那么问题来了,若是直接提醒用户出 ...
- 微信公众号自动回复服务器数据,[终极方案]解决微信公众号服务器配置启用后无法自动回...
在配置服务器配置时Token验证通过后,遇到给公众号发信息,提示:提示该公众号提供的服务出现故障,请稍后再试 的问题,一直实现不了自动回复的功能.百度了大量的资料,参考了开发文档,尝试了n种办法,检查 ...
- iOS开发中解决第三方静态库符号冲突的终极方案
iOS开发中解决第三方静态库符号冲突的终极方案 背景 在iOS开发的时候,经常会使用各种第三方静态库,这些库内部可能会打包了相同的第三方库.那么在链接的时候就会发生符号冲突. 例如:A厂商提供的lib ...
最新文章
- vue 删除页面缓存_vue项目强制清除页面缓存的例子
- 用ul li实现边框重合并附带鼠标经过效果
- leetcode337. 打家劫舍 III(dfs)
- 使用pycharm配置flask项目,并使用git进行版本控制
- git 提交文件_GIT不小心提交了大文件导致提交失败怎么办?
- 判断回文数和求斐波拉序列
- 学习OpenVINO笔记之Inference Engine
- linux内网发现登录设备,LINUX 内网设备将服务映射到公网地址
- @程序员,夏天来了,你该送心仪女生这个啦
- 移动端-项目基础总结------彭记(020)
- 在VC++ 6.0下利用共享内存、消息实现内部进程通讯
- c#餐饮系统打印机_C#实现打印机功能
- php 图片木马,php图片木马实现原理
- DailyFi - 9.2 |Loot,黑纸白字?
- 2016/7/4日-你若安好,便是晴天.
- 面试官常问的设计模式及常用框架中设计模式的使用(一)
- 标准I/O和系统I/O的本质区别
- 【C语言】实现简单的计算器
- 一个“精神病”人的世界观
- 从topcoder赚钱的方法
热门文章
- win10系统下office2003和office2016兼容
- 使用lombok时,get/set方法冒红问题
- 在python中month函数的用法_Python代码中calendar.monthrange(year,month)函数其什么作用呢?...
- python3几种常见解压压缩包的方法
- python 小数点位数_python小数位数
- VMware虚拟机软件账号的注册问题
- 自定义自己的iphone铃声
- HAUT 1285: 军团再临【并查集*逆向思维】
- 第2章 物联网安全基础
- 卡内基梅隆计算机专业,卡内基梅隆大学计算机科学专业全面解析