- 参考资料
- 1. 前言
- 远程桌面软件推荐
- 比较
- 2. Ubuntu配置SSH和xrdp
- 安装ssh
- 安装xrdp
- 3. 安装frp进行内网穿透
- 法一:使用DDNS服务平台
- 法二:使用frp
- 安装配置frp
https://zhuanlan.zhihu.com/p/336429888
1. 前言 远程桌面软件推荐强烈建议阅读参考资料,本文后半部分内容基本拷贝自参考资料,只作笔记使用,不作其他用途。
随着过去一年多的研究生生涯,也陆陆续续用了几款远程桌面软件。目前来看都还不错。我主要用过的是3款:TeamViewer,RustDesk, 向日葵, ToDesk这4款ubuntu和windows下均可使用。
三个软件的界面分别如下:
- 其中,个人体验而言,TeamViewer,RustDesk,ToDesk是优于向日葵的。因为向日葵免费版不能够进行传输文件,剪贴板也不能共享(不能相互之间复制粘贴文字)。相反,TeamViewer和RustDesk可以做到以上两种需求。
- 速度而言,使用局域网时,体验上三者没有什么差别;不使用局域网连接时,向日葵速度>TeamViewer>RustDesk=ToDesk。所以,使用局域网时,还是推荐使用后三者的。不过可以自建服务器,不过我自己没有试过,还不懂咋搞。。。
- 使用向日葵可能会碰到的一个问题,就是远程连接Ubuntu时,一连接就秒断的问题。具体可参考这个。之前实验室的服务器就碰到了这个问题,折腾了很久都没解决,还差点把系统搞崩了,因此果断放弃在服务器上使用向日葵,转为使用后3种了。
sudo apt install ssh
会自动安装好很多依赖包并启动服务,完成之后用XShell等软件就可以SSH登录服务器了。
安装xrdpXrdp 是一个微软远程桌面协议(RDP)的开源实现,它允许我们通过图形界面控制远程系统。这里使用RDP而不是VNC作为远程桌面,是因为Windows自带的远程桌面连接软件就可以连接很方便,另外RDP在Windows下的体验非常好,包括速度很快(因为压缩方案做得比较好),可以直接在主机和远程桌面之间复制粘贴等等。
有的Xwindow软件是不太兼容xrdp的(比如ubuntu 18.04的默认桌面),但是ubuntu 20.04使用的Gnome是完全ok的。
安装过程如下:
sudo apt install xrdp
安装完成xrdp 服务将会自动启动,可以输入下面的命令验证它:
sudo systemctl status xrdp
默认情况下,xrdp 使用/etc/ssl/private/ssl-cert-snakeoil.key
,它仅仅对ssl-cert用户组成语可读,所以需要运行下面的命令,将xrdp用户添加到这个用户组:
sudo adduser xrdp ssl-cert
sudo systemctl restart xrdp
然后使用Windows自带的远程桌面软件连接服务器IP地址或者域名就行了。
3. 安装frp进行内网穿透前面介绍的SSH和xrdp都是需要在局域网
下通过IP地址进行连接的。
网络运营商提供的网络服务通过路由器路由到各个设备,此时路由器会同时具备内网地址(路由器之内,局域网,LAN,也就是192.168.x.x)和外网地址(路由器之外,互联网,WAN)。但是其实这个WAN口的IP并不是真正的“公网IP”,而时经过了多层的NAT转换之后的地址,外网的设备是不能通过这个地址访问到路由器的。这个问题的原因是ipv4地址池紧张,如果运营商给每家的路由器都安排一个公网ip的话,那ip地址早就不够用了。
因此为了能让外网访问到我们局域网内的设备,就需要跟中国电信等运营商申请公网ip(现在能申请到的概率也已经不大了,而且即使申请到也不是所有端口都可以使用的),或者我们自己动手做一些 *** 作来达到同样的目的。
法一:使用DDNS服务平台可以直接用类似花生壳这样的DDNS服务平台做转发实现内网穿透,优点是比较简单稳定,缺点是需要持续付费,而且速度和延迟效果一般,而且每加一个端口都要额外付费。
法二:使用frp使用frp之类的软件做反向代理来实现内网穿透,这个方案也是需要你有一台带公网IP的云服务器的,优点就是完全可控,自己想配置多少个端口的穿透都可以,速度跟你的云服务器带宽有关。
安装配置frp为什么需要多个端口?是因为不同应用占用的端口不同,比如我们的SSH走的是22号端口,而远程桌面的rdp走的是3389号端口,如果需要自建Web服务的话则是走80/443端口、想把工作站作为上外网的代理服务器的话会需要1080端口等等…所以用上面第二个方案显然会方便很多,而且云服务器也不贵,我在腾讯云上购买一年只要200左右。
frp分为frps(server)和frpc(client)两个包 ,其中前者安装到我们的云服务器上,后者安装在需要被外网访问到的各个设备上。
-
云服务器端:
去https://github.com/fatedier/frp/releases下载适合你服务器系统的frp软件
例如使用腾讯云Ubuntu20.04,则选择frp_0.42.0_linux_amd64.tar.gz,下好之后解压:
tar -zxvf frp_0.42.0_linux_amd64.tar.gz
我们需要编辑的文件是
frps.ini
:内容改为:
[common] bind_port = 7000 # frp服务的端口号,可以自己定 dashboard_port = 7500 # frp的web界面的端口号 dashboard_user = user # web界面的登陆账户,自己修改 dashboard_pwd = pass # web界面的登陆密码,自己修改 authentication_method = token token = xxxxx # frp客户端连接时的密码,自己修改
保存配置后,使用该命令启动:
./frps -c ./frps.ini
在浏览器输入
[云服务器的公网ip]:7500
即可访问到 frp的web管理界面。注意,可能需要去云服务器控制台配置安全组规则 开放以上涉及到的端口,否则无法访问。
-
本地的服务器端:
下载相应版本的frpc软件包(跟刚刚一样的):https://github.com/fatedier/frp/releases,这里选amd64的,下好之后解压到一个临时文件夹。
修改frpc.ini
配置文件,内容如下:[common] server_addr = xx.xx.xx.xx # 你的云服务器的公网ip authentication_method = token token = xxxxx # 刚刚配置的frp连接密码 server_port = 7000 # 刚刚配置的frp服务端口 [Fusion-ssh] type = tcp local_ip = 127.0.0.1 local_port = 22 remote_port = 20022 [Fusion-rdp] type = tcp local_ip = 127.0.0.1 local_port = 3389 remote_port = 23389
通过上面的脚本就可以把对于云服务器特定端口的访问给重定向到本地服务器的某个端口了,简单地讲就是:假如我用SSH客户端访问
[云服务器ip]:20022
,就可以经过反向代理直接访问到[本地的训练服务器ip]:22
;同理需要连接远程桌面的话,只需要访问[云服务器ip]:23389
就可以了。当然也可以修改脚本添加更多映射。
-
添加开机自动启动的脚本,新建一个文件内容如下:
文件名
/etc/systemd/system/frpc.service
,注意修改其中的路径:[Fusion] Description=Frp Server Daemon After=syslog.target network.target Wants=network.target [Service] Type=simple ExecStart=/usr/local/bin/frp/frpc -c /usr/local/bin/frp/frpc.ini # 修改为你的frp实际安装目录 ExecStop=/usr/bin/killall frpc #启动失败1分钟后再次启动 RestartSec=1min KillMode=control-group #重启控制:总是重启 Restart=always [Install] WantedBy=multi-user.target
然后执行以下命令启用脚本:
sudo systemctl enable frpc.service sudo systemctl start frpc.service
通过下面的命令查看服务状态,如果是running的话就说明可以了:
sudo systemctl status frpc.service
frp搭建的时候,配置文件里注意把注释删掉,不然会报错,这个配置文件不能用#号注释
——来自知乎评论
这里顺便提一下,按照习惯一般把上面的frp软件解压在`/usr/local/bin`目录下。Linux 的软件安装目录是也是有讲究的,理解这一点,在对系统管理是有益的
> - `/usr`:系统级的目录,可以理解为C:/Windows/ /usr/lib:可以理解为C:/Windows/System32
> - `/usr/local`:用户级的程序目录,可以理解为C:/Progrem Files/,用户自己编译的软件默认会安装到这个目录下
> - `/opt`:用户级的程序目录,可以理解为D:/Software,opt有可选的意思,这里可以用于放置第三方大型软件(或游戏),当你不需要时,直接`rm -rf`掉即可。在硬盘容量不够时,也可将`/opt`单独挂载到其他磁盘上使用
> - `/usr/src`:系统级的源码目录 `/usr/local/src`:用户级的源码目录。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)