# VSCode 隧道功能
# 为什么需要 VSCode 隧道?
自己搭建内网穿透的服务器不仅成本高同时带宽小。使用微软提供的中继服务器(虽然有安全风险)可以节省不少操作和成本。
# 前提需要
服务端 VSCode CLI
https://code.visualstudio.com/#alt-downloads客户端 VSCode(1.74+) + Tunnel(Microsoft)插件(或者直接使用 vscode.dev 在线编辑器)
# 服务端安装步骤 (Linux 篇)
按
前提需要
下载 VSCode CLI,选择对应版本:下载后使用 tar 解压
h tar -xvzf {压缩包的名称}
解压后当前目录下会有
code
二进制程序先后执行以下命令:
h ./code tunnel --accept-server-license-terms
首次运行将会弹出一个登陆网址和 8 位数的 code。复制登陆网址 https://github.com/login/device 到浏览器中登陆对应的 GITHUB 账户,并将 code 输入以完成服务器注册:
随后CTRL+C
退出该程序,执行下述命令使得 code 以用户服务守护运行:h ./code tunnel service install
P.S. 在使用 systemctl 管理的 linux 服务器上,服务将可以使用 systemctl 进行管理,服务名为code-tunnel
设置服务自启
h systemctl --user enable --now code-tunnel
P.S. 由于用户服务默认会在用户登出时退出运行,因此还需要以下步骤:
参考 https://wiki.archlinux.org/title/Systemd/User#Automatic_start-up_of_systemd_user_instances
使用命令h loginctl enable-linger {你的用户名}
同时修改默认的 用户服务
h vim /home/{你的用户名}/.config/systemd/user/code-tunnel.service
将其部分内容修改为:
WantedBy=default.target
将
WantedBy=multi-user.target
修改为WantedBy=default.target
之后重新 enable 服务h systemctl --user enable --now code-tunnel
查看服务的运行状态 (可选)
h systemctl --user status code-tunnel
可能遇到的问题:
- 对于 Centos7 来说,无法使用
systemctl --user ...
启动用户服务,会提示 dbus 找不到文件 (systemd 219 版本不支持 --user)- 自己写全局 service,使用 sudo 指令(需要拥有 sudo 权限)
- 换其他系统例如
ubuntu
或者arclinux
# 服务端安装步骤 (Windows 篇)
1-3 步与 Linux篇
类似,下载的压缩包为 zip 格式。
- 解压后同样在 code 的目录下以管理员的命令执行首次安装与
h ./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-everythingwin+R
运行secpol.msc
进入本地策略组- 将当前用户加入到允许以服务运行的白名单中
# 客户端
使用 VSCode 桌面端
启动 VSCode,安装
tunnel
插件进入页面
选择指定的服务器进行连接,该操作与
remote ssh
相同
直接使用 VSCode 网页(可选)
- 进入之前服务器安装后的提示的网址
https://vscode.dev/tunnel/{你的tunnel名称}
- 如果忘记了
tunnel
名称,可以在服务器上执行
h ./code rename {你要设置的tunnel名称}
- 进入之前服务器安装后的提示的网址