为了不在家也能管理配置我的个人服务器,我开始研究内网穿透连接SSH
DDNSTO是一个很好的选择,一来是足够便宜,二是配置起来也很方便,但是它是docker部署的,docker出问题的话它也就用不了了,不巧的是,这两天我恰巧遇到了这样的问题,无论是按照docker官方的安装步骤,还是直接使用一键get-docker脚本,我都无法在我的debian服务器上正常启动docker,以至于我不得不将我的服务全数迁移到Ubuntu系统上了,除此之外,DDNSTO的ssh连接是在网页上进行的,这导致我粘贴到ssh终端内的一些内容,例如docker-compose.yml的内容,往往都是排版错乱的,还需要我调整半天。
TailScale、Zerotier这一类必须在客户端也安装软件的内网穿透服务也被我放弃了,毕竟我还需要在上班摸鱼的电脑上也能访问我的服务器。
简单对比了一下网上常见的内网穿透服务,其实也就frp、nps这一类的可以选了。听说frp打洞成功率比较高,稳妥起见,我还是使用了frp。
国内云服务商是不怎么待见frp的,此前在腾讯云上部署过frp,腾讯云居然报毒,并直接删除了frp。因此,我一开始是在DigitalOcean的vps上部署frp的,无奈墙高海阔,frp虽然打洞成功,但延时常常大于999ms,迫不得已只好将目光移回我的小水管阿里云服务器上。这台云服务器带宽仅有1Mbps,所以搭建什么服务都不好用,已经被我废弃很长时间了。但ssh连接毕竟不需要多大带宽,想来应该是没多大问题的。
和在DigitalOcean一样的步骤部署frp,该开放的端口也都开启了,但不知为何就是部署失败,错误提示 error unmarshaling JSON: while decoding JSON: json: cannot unmarshal string into Go value of type v1.ServerConfig
,这在frp的github issue里也有其他人遇到,但是并没有给出解决方法。
我怀疑是阿里云的问题,于是先用一键dd脚本将云服务器镜像更换为官方Ubuntu镜像,dd的过程中ssh是肯定会断开的,只能用vnc看到进度,dd成纯净的Ubuntu系统后再部署frp就没出现这个问题了。
值得一提的是,在我折腾frp的这段时间里,frp的最近几个版本已经抛弃了原来的ini格式的配置文件,改用toml格式了,配置项丰富了很多,相当于以前版本里的frps_full.ini。当然了,如果你不需要那些复杂的配置项,和以前frps.ini一样简单配置几行也就够了,按照新的格式要求稍微修改一下就行了