其实最根本的远程控制无非也就是三种,VPN,直接开端口和内网穿透。
Cloudflared SSH
之前用Cloudflared代理了好多服务,这些服务都是基础的前后端服务,我们还可以用Cloudflared来代理SSH流量,步骤也很简单,就是在网页端直接新创建一个域名加入之前的Tunnel,以后访问MiniPC就可以直接ssh到这个域名,也可以配合VSCode Remote SSH功能可以很方便地远程开发。
缺点就是MiniPC和要访问的终端都得安装Cloudflared。而且既然现在MiniPC可以公网访问了,建议最好仅使用密钥进行登录。
brew install cloudflared
修改~/.ssh/config
Host ssh.example.com
ProxyCommand /opt/homebrew/bin/cloudflared access ssh --hostname %h
此外,在Cloudflare里新建一个Application,选择ssh的域名,开启Browser rendering settings也可以直接在网页端ssh到服务器,非常方便,但是注意一定要开启防护。
code-server
code-server 是一个网页端的VSCode,我们随便进入一个GitHub仓库,点击句号(注意得是英文),GitHub就会帮我们展现一个网页端的VSCode用于浏览代码(估计很多人都不知道这个功能)。我其实也不知道自己部署一个网页端的IDE有什么用,想来想去可能为了避免在公司连接自己的服务器写自己的项目被发现吧(毕竟这样就走HTTPS不走SSH流量了,一般公司也不会在意员工浏览了什么网站)
services:
code-server:
image: ghcr.io/coder/code-server:latest
container_name: code-server
restart: unless-stopped
environment:
- PASSWORD=yourpassword
- PUID=1000
- PGID=1000
volumes:
- ./config:/home/coder/.config/code-server
- ./projects:/home/coder/projects
# ports:
# - "8080:8080"
networks:
- cloudflared
networks:
cloudflared:
external: true
VSCode Tunnel
这个工具是VSCode自己开发的代理,就不是Docker部署了,简而言之刚才的code-server是MiniPC端渲染Electron前端,而这个在MiniPC端就是转发数据,降低miniPC的压力,如果想在容器里开发,Tunnel对Dev Containers支持更好,这也是我目前使用的方案。
安装方法也很简单,直接在MiniPC上下载CLI以及解压
curl -Lk 'https://code.visualstudio.com/sha/download?build=stable&os=cli-alpine-x64' --output vscode_cli.tar.gz
tar -xf vscode_cli.tar.gz
./code tunnel
然后可以登录GitHub账号,会直接跳转到VSCode的域名进行开发。
可以加入Systemd实现开机自启
-
创建新的配置文件
sudo vim /etc/systemd/system/vscode-tunnel.service填写内容
[Unit] Description=VSCode Tunnel After=network.target [Service] Type=simple User=kyxie WorkingDirectory=<path_to>/vscode ExecStart=<path_to>/vscode/code tunnel Restart=always RestartSec=5 [Install] WantedBy=default.target -
重新加载 systemd
sudo systemctl daemon-reload -
设置开机自启动
sudo systemctl enable vscode-tunnel.service sudo systemctl start vscode-tunnel.service
Wireguard
Wireguard是一个很轻量级的VPN,内置在Linux中,相比之下它的配置最复杂,详见:OpenWrt配置Wireguard | Kunyang’s Blog。
然而能干的事儿也最多,之前我的台式机和MiniPC都在家中,有了Wireguard就相当于直接连接了家里的内网,配合Wake On Lan可以很方便的唤醒家里的台式机,以及对台式机远程桌面,和ssh到MiniPC。
缺点就是Wireguard配置有时候不稳定,假如DDNS更新家里的IP地址不及时,或者运营商中间捣乱封堵UDP流量,会出现连不上的情况。