起因
平时如果需要在公司访问家里的电脑一般都是用的 teamviewer,免费版一般都够用,没啥问题。可是最近也不知道是不是因为远程办公的人太多了,teamviewer 经常显示我要连的计算机离线,没关机的电脑要怎么离线嘛(:з)∠)于是我就重新找了下有没有其他好用的内网穿透的工具。
对比
内网穿透说白了就是内网机器没有对外的 IP,从外部不能直接访问,就需要有个站在外面的中间人转发下消息。看了下现有的工具,应该是分为两类:
- 有第三方中心服务器的,teamviewer、向日葵、zerotier...
- 需要有公网 IP 的服务器的,frp、SoftEther...
我的需求是自己能访问就行,也不需要像服务一样暴露给其他人,懒得再另外搞个服务器了,果断选择了第一类。teamviewer 由于会抽风跳过; 向日葵搜了下收费版风评好像也没比 teamviewer 的免费版好,也跳过; 所以选择了 zerotier。
zerotier原理
zerotier 使用时会创建一个虚拟局域网(VLAN),所有加入这个网络的机器可以像是在一个局域网一样互相访问。只需要管理员去官网注册一个账号并创建网络,其他人安装zerotier的客户端并加入对应VLAN即可。
Remote-Access-Server-2020-3-20-22-19-51.png创建VLAN
注册一个账号
官网链接,注册略过
创建一个新的网络
点击网站上方的NETWORK,然后再点击蓝色的Create a Network
,就会自动创建一个网络,网络会显示个网络ID在蓝色按钮下面
网络具体配置
点击上一步创建的网络,可以进入网络配置。
- 下图的权限控制,
PRIVATE
表示加入网络的客户端需要你在下面的设备列表勾选了才能进入这个VLAN;PUBLIC
表示任何加入的客户端都能直接进入。 -
IPv4 Auto-Assign
中随便选一个你想要的VLAN的网段 - 底下的那个显示设备MAC地址、VLAN IP 和公网IP的列表是加入这个网络的设备,
AUTH
勾选了表示允许加入了这个网络,Managed IPs
可以给每个设备一个想要的IP - 点击设备名称旁边的小扳手,
Allow Ethernet Bridging
网络中的设备需要互相通信的话要勾选;Do Not Auto-Assign IPs
我是勾选了不自动分配,自己给每个设备固定设置IP
Remote-Access-Server-2020-3-20-22-43-38.png
客户端安装
安装zerotier的客户端,各个平台按照说明安装即可,加入网络后如果网络设置的PRIVATE,需要管理员在配置页面允许加入下,配置说明可以看上面的说明
windows
window最简单,下载msi直接安装就行了。装好后在通知栏有个小图标,右键Join Network,填上上面创建的网络的ID就加入了
Remote-Access-Server-2020-3-20-22-58-58.png
centos
添加yum源
vim /etc/yum.repos.d/zerotier.repo
[zerotier]
name=ZeroTier, Inc. RPM Release Repository
baseurl=http://download.zerotier.com/redhat/el/$releasever
enabled=1
gpgcheck=0
命令行操作(root)
yum clean all
yum install zerotier-one #安装
zerotier-one -d #启动
zerotier-cli status #查看状态
zerotier-cli join <Network ID> #加入网络
systemctl start zerotier-one.service
systemctl enable zerotier-one.service #开机自启
VSCode Remote SSH
同一个局域网的windows直接远程桌面就可以愉快的玩耍了, windows用xshell等工具连接linux服务器操作的话还是有点蛋疼,尤其是需要修改代码啥的。
Remote SSH
是VSCode远程开发包中的一个扩展,在目标linux服务器配置好ssh后,可以在本地直接用VSCode远程连接写代码,用起来超方便。
ssh配置
密钥生成
- 生成ssh密钥,
ssh-keygen -t rsa -C"你的邮箱"
- 编辑
~/.ssh/config
(windows在C:\Users\xxx.ssh),配置好服务器User(用户名)、HostName(服务器IP)、IdentityFile, - 终端敲命令,
name@server-ip
根据你的服务器和用户名填写
SET REMOTEHOST=name@server-ip
scp %USERPROFILE%\.ssh\id_rsa.pub %REMOTEHOST%:~/tmp.pub
ssh %REMOTEHOST% "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat ~/tmp.pub >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys && rm -f ~/tmp.pub"
错误处理
有时候直接用VSCode连接linux服务器会报错,如果错误是wget下载文件错误的话,在VSCode输出日志上面应该有一串哈希值的commit-id,对应vscode某个release版本。直接用本地电脑访问 https://update.code.visualstudio.com/commit:<commit-id>/server-linux-x64/stable先下载下来,下载后将vscode-server-linux-x64.tar.gz
文件解压到~/.vscode-server/bin/<commit-id>
,后面再用VSCode远程应该就可以了
用后感
-
访问同一个VLAN的机器速度还是很快的,windows的话直接远程桌面和teamviewer比基本上是没区别了,而且还稳定。
Remote-Access-Server-2020-3-20-23-9-36.png -
传输文件比较弱,通过ssh的scp传输文件的时候,最开始10秒还可以2M/s,后面就缩水成kb/s了,不过只要网连着,找个网盘中转下就行
-
对于一些不方便安装客户端的设备,可以通过已经加入网络的客户端,做一下端口映射,相关工具比如gost,有需要的自己去看看吧
网友评论