[VSCode] VSCode Tunnel - VSCode隧道安装篇
本文作者: Minskiter @Blog of Minskiter
本文链接: https://mskter.com/2022/12/16/vscodeTunnel-zh/
版权声明: 本站所有文章除特别声明外,均采用 (CC)BY-NC-SA 许可协议。转载请注明出处!
VSCode 隧道功能
为什么需要VSCode隧道?
在如今公网IP稀缺以及国内商业带宽十分昂贵的情况下,自己搭建内网穿透的服务器不仅成本高同时带宽小,而使用微软提供的中继服务器(虽然有安全风险),但是可以节省不少操作和成本。
前提需要
-
服务端 VSCode CLI
https://code.visualstudio.com/#alt-downloads -
客户端 VSCode(1.74+) + Tunnel(Microsoft)插件
(或者直接使用vscode.dev在线编辑器)
服务端安装步骤(Linux篇)
-
按
前提需要
下载VSCode CLI,选择对应版本:
-
下载后使用tar解压
tar -xvzf {{压缩包的名称}}
-
解压后当前目录下会有
code
二进制程序 -
先后执行以下命令:
./code tunnel --accept-server-license-terms
首次运行将会弹出一个登陆网址和8位数的code。复制登陆网址https://github.com/login/device到浏览器中登陆对应的GITHUB账户,并将code输入以完成服务器注册:
随后CTRL+C
退出该程序,执行下述命令使得code以用户服务守护运行:
./code tunnel service install
P.S. 在使用systemctl管理的linux服务器上,服务将可以使用systemctl进行管理,服务名为code-tunnel
- 设置服务自启
systemctl --user enable --now code-tunnel
P.S. 由于用户服务默认会在用户登出时退出运行,因此还需要以下步骤:
参考 https://wiki.archlinux.org/title/Systemd/User#Automatic_start-up_of_systemd_user_instances
使用命令
loginctl enable-linger {你的用户名}
同时修改默认的 用户服务
vim /home/{你的用户名}/.config/systemd/user/code-tunnel.service
将其部分内容修改为:
WantedBy=default.target
将WantedBy=multi-user.target
修改为WantedBy=default.target
之后重新enable服务
systemctl --user enable --now code-tunnel
(可选)6.查看服务的运行状态
systemctl --user status code-tunnel
可能遇到的问题:
- 对于Centos7来说,无法使用
systemctl --user ...
启动用户服务,会提示dbus找不到文件(systemd 219版本不支持--user)
- 自己写全局service,使用sudo指令(需要拥有sudo权限)
- 换其他系统例如
ubuntu
或者arclinux
服务端安装步骤(Windows篇)
1-3步与Linux篇
类似,下载的压缩包为zip格式。
- 解压后同样在code的目录下以管理员的命令执行
./code tunnel service install
首次安装与Linux篇
同
注意:
- 如果使用大写请不要使用
Cas Lock
大小写切换键,请使用shift+a-z
输入大写 - 单独下载CLI,不要使用VSCode Desktop(自带的可能造成直接进入password无法输入username等情况)
安装后与Linux篇
同样的使用方式
可能出现的问题:
- 当前服务由于登陆失败导致无法运行
解决方法 https://stackoverflow.com/questions/44604523/error-1069-the-service-did-not-start-due-to-logon-failure-tried-everything
win+R
运行secpol.msc
进入本地策略组- 将当前用户加入到允许以服务运行的白名单中
客户端
- 使用VSCode桌面端
-
启动VSCode,安装
tunnel
插件
-
进入
页面
-
选择指定的服务器进行连接,该操作与
remote ssh
相同
(可选)2. 直接使用VSCode网页
- 进入之前服务器安装后的提示的网址
https://vscode.dev/tunnel/{你的tunnel名称}
- 如果忘记了
tunnel
名称,可以在服务器上执行
./code rename {你要设置的tunnel名称}