-------------20220416更新-------------
更高效便捷的远程桌面访问方案:FRP + NoMachine远程桌面开发指南
硬件配置
- 内网主机:ubuntu20.04 LTS 桌面版
- 外网设备:windows笔记本
- 云服务器:ubuntu20.04 server
FRP内网穿透(远程ssh终端+rdp桌面配置)
使用FRP实现内网穿透的流程很简单,就是位于内网的主机将远程ssh终端和远程rdp桌面的端口映射到云服务器的端口,在外网设备上使用云服务器的公网IP+映射的端口即可访问内网的台式主机,如下图:
云服务器配置(frp server)
云服务器带宽要尽量大一些,可以使用腾讯云的轻量应用云服务器,8M带宽,一年也就七十多块。
下载frp
在https://github.com/fatedier/frp/releases中下载最新的frp,我的云服务器系统为ubuntu20.04,此时相应的最新版本为frp_0.39.1_linux_amd64.tar.gz。
解压frp
tar -xzvf frp_0.39.1_linux_amd64.tar.gz
编辑frps.ini
解压后文件夹中有两类文件,一类以frps
开头,表示frp服务端(server)相关文件,另一类以frpc
开头,表示frp客户端(client)相关文件。要将云服务器配置为frp服务端,所以要修改frps.ini文件
[common]
bind_port = 7000
bind_addr = 0.0.0.0
dashboard_port = 7500
dashboard_user = admin
dashboard_pwd = admin
编辑云服务器防火墙规则
在防火墙处允许frp服务端、客户端的端口请求,这里的7000、7500端口是服务端端口,5900映射到客户端的远程rdp桌面端口,2222映射到客户端的远程ssh端口。
启动frp服务端
./frps -c ./frps.ini
在该命令后加&
即可在后台运行frp
在本地浏览器中输入公网ip:7500
即可登陆frp服务端的dashboard,用户名和密码就是frps.ini中配置的admin
。
内网主机配置
下载frp
与云服务器一致
编辑frpc.ini
[common]
server_addr = 公网IP地址
server_port = 7000
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 2222
[rdp]
type = tcp
local_ip = 127.0.0.1
local_port = 5900
remote_port = 5900
启动frp客户端
./frpc -c ./frpc.ini
配置ssh服务端
如果想要使用远程终端,或者使用VScode远程连接内网主机,那就需要用到ssh,ubuntu系统上安装openssh-server即可启动ssh服务:
sudo apt-get install openssh-server
此时在外网设备中打开命令行,输入:
ssh 用户名@公网ip:2222
即可打开内网主机的ssh终端
如果外网设备上安装了vscode,则内网主机的ssh远程配置为:
Host 主机名
HostName 公网ip
User 用户名
Port 2222
ForwardAgent yes
配置远程桌面
参考:搭建Window10 VNC远程访问ubuntu20.04
使用ss -lnt
可查看远程桌面是否开始监听,如果出现以下字符即已开始监听:
LISTEN 0 5 0.0.0.0:5900 0.0.0.0:*
在配置frp客户端时,我们将内网主机的5900端口映射到云服务器的5900端口,这样在外网设备上使用公网ip:5900
即可访问内网主机的桌面。
报错处理:Ubuntu 20.04 Xrdp 远程桌面黑屏
参考