基于 tailscale 实现内网穿透,并通过 vscode ssh 链接主机
Tailscale 是一个可以实现组网和内网穿透的工具,实现设备之间的 P2P 链接。它的使用很简单,就是在不同设备上下载 talscale 软件并登陆自己的账号,同一个账号下设备可以互相访问。
优势在于,建立连接成功后,P2P 直连带宽会比较大,相比于一些基于转发的内网穿透服务商限制的几 Mbps 的速度来说;而缺点在于每个设备都需要下载软件并登陆自己的账号,因此应用场景更受限于个人访问自己的设备,或少数可信的人共享设备。
Tailscale 配置过程
- 注册账号
- 设备1下载(windows)
- 设备2下载 (Linux)
参考:https://tailscale.com/download/linux
每个设备软件下载完成后,需要登录账号。windows 下直接点开软件,Linux 为命令行工具,需要 sudo tailscale up
打开。
最后:更详细的 Tailscale 安装过程可以参考 https://www.bilibili.com/video/BV1dX4y147KH/ 等。
配置 SSH
Tailscale 默认支持使用其自带的 SSH,因为设备之间的验证已经通过账号登录实现了,所以不需要通过 openssh 等第三方 SSH 了。
host: Linux
首次建立连接前,服务器端需要先运行 sudo tailscale up --ssh
(后续可以通过 tailscale up --ssh=false
禁用)
启用 ssh 后,可以通过网页进入:
注意:启用后,其他非 Tailscale SSH 链接会断开,因为它已经占用了 22 端口,后续大概可以通过端口转发实现与 openssh 的共存。
client: windows
客户端 ssh server-name
进行连接,其中 server-name
是网页端 console 里面设置的设备名称。
客户端 ssh user@server-name
指定用户进行登录。
注意这里有个坑,ssh server-name
尝试登陆时,没有指定用户名,则会使用当前客户端登陆的用户名。但是这个用户名需要存在于主机 host 才可以正常建立连接。
如果没有意外的话,就可以成功建立 ssh 链接了。
vscode
远程资源管理器链接即可,vscode 会自动在对应的 ~/.vscode-server/
下安装相应组件。如果遇到错误,在控制台输出查看调整。
这里我拿 streamlit 做实验,需要手动在“端口”设置端口转发,才可以在当前电脑查看。