我常会带着被称为“锻炼神器”的游戏本去上课,后来我逐渐厌倦了,想尝试一些新的方案,比如说通过相对较小的终端对于笔记本进行远程控制,其中走了不少弯路,也尝试了一点新的东西,现在简单分享一下我的解决方案供大家参考。
这样如果大家遇到与我类似的情况,可以至少快速的解决一些问题。
需求描述:
能够从终端电脑(相对较轻,但是不支持内核虚拟化,无法使用WSL和虚拟机)操作服务端电脑的WSL进行代码编写与调试操作。
背景介绍:
我使用的终端电脑是matebook-E-2019(win11)
,对应的服务端电脑是Acer-暗影骑士擎
其中终端电脑相对较为特殊,是Snapdragon(TM)850
+armwin10
的电脑,我后期根据install win11 in matebook-e-2019的操作,实现了系统升级(升级成为了win11)【因为听说win11对于触摸的支持更好】,但是这不是重点...
迭代经历介绍
开始的时候,我主要尝试的方案是通过类似于ToDesk
或者parsec
的方式实现从终端电脑操作服务端电脑的操作,但是后来发现这种方案相对来说受到网络波动的影响较大,同时也更有可能出现操作延迟的情况,手感相对来说没有那么好。
因此尝试使用一种更新的方案,就比如说通过ssh
远程进行链接的操作,这时候我就遇到了另外一个问题,在大多数情况下我被分配的ip
地址都不是ipv4
公网地址,而是通过运营商或者校园网服务提供商进行转发的,这也就意味着没有办法实现两台机子中的直连操作 理论上可以向电信提供商申请浮动公网ip
地址,将服务端电脑放在家中,但是我没有尝试,因为我想要我的服务端电脑尽可能的距离我较近,方便在出现故障的时候进行排除。
于是我开始尝试通过内网穿透来实现ssh
连接的操作,首先尝试的是zerotier
,但是他在我的终端电脑中无法创建对应的虚拟网卡以加入网络,经过逐步debug
翻阅对应的docs
和STFW
发现这是由于zerotier
没有提供arm
电脑中的某些驱动引起的,遂尝试别的提供内网穿透的服务,就比如说natapp
,经过我的测试,实际上可以使用他们提供的免费隧道服务,来实现正常的编程需求的(经过我的测试,一个月至少可以有1G[我只测试到这]的流量,基本足够使用)
具体如何使用natapp
在wsl中配置对应的服务端可以见natapp
的一分钟文档,相对来说比较简单,在终端电脑这边也只需要简单的下载vscode
以及ssh remote
等几个插件,就可以实现从vscode
中远程到WSL
中进行编程操作。
在登陆的过程中,可能会面临每次登录都需要手动输入密码的情况,此时可以通过在终端电脑中手动生成ssh
密钥,并将id_rsa.pub
中的内容添加到服务端电脑的~/.ssh/authorized_keys
文件中
vscode
ssh config
文件书写方式:
Host free [此链接的名称(随便设)]
HostName server.natappfree.cc [这个地方由官网提供给你]
User jacky [这个是你要登录的用户名]
Port 46635 [在服务端电脑执行`./natapp`程序之后第三行显示的端口号]
IdentityFile "C:\Users\jacky\.ssh\id_rsa"[你的终端电脑`ssh`公钥的放置位置]
总体来说可以相对较好的通过vscode
+natapp
实现内网穿透+WSL
远程操作,但是如果诸位使用的不是ARM
笔记本电脑,可以尝试使用zerotier
提供的内网穿透服务(免费)
原因在于natapp
的免费隧道提供的是每天自动切换转发端口的形式,每天都要改动ssh config
文件中的port
,在远程情况下不太方便(可能需要通过todesk
或者其他远程桌面控制软件访问对应桌面,来手动打开终端中的natapp
软件,查看其分配给你的端口号)
因此可能在使用natapp
的时候需要通过购买付费隧道,实现端口固定,外加上服务端电脑WSL
终端常年不关。
远程桌面控制软件:todesk
,parsec
,rustdesk
内网穿透提供软件:zerotier
,natapp
注: 群里的同志反应todesk
可能存在0day
漏洞,请诸位谨慎使用,同时推荐了rustdesk