VNC+frp实现远程访问Ubuntu和树莓派

一直用TeamViewer远程访问电脑,这款软件感觉非常好用方便,但是但是突然出现了一条消息:VNC+frp实现远程访问Ubuntu和树莓派_第1张图片
整个人都不好了
VNC+frp实现远程访问Ubuntu和树莓派_第2张图片
虽然后面说是误报,但还是把TeamViewer卸载了,准备利用VNC+frp自己搭建一个远程访问。我们可以有两种搭建方式:一种是有公网服务器搭建,另一种是无公网服务器搭建。

搭建方式一:有公网服务器情况下

1.准备

  1. 公网服务器一台(腾讯云,阿里云,华为云等服务器均可)
  2. 内网穿透工具 frp (免费开源)
  3. 远程控制软件 RealVNC

2.服务器上部署(服务端)

首先了解一下frp是什么?
frp是一个可用于内部网穿透的高级反向代理应用程序,支持tcp,udp协议,为http和https应用协议提供了额外的能力,并且尝试性支持了点对点穿透。
VNC+frp实现远程访问Ubuntu和树莓派_第3张图片

  • 第一步下载frp到公网服务器

登录公网服务器下载frp,frp下载地址:https://github.com/fatedier/frp/releases
找到对应版本下载
(注:可以输入arch,查看cpu架构,云服务和Ubuntu16.0.4都是x86_64处理器架构,所以下载amd64的包)
VNC+frp实现远程访问Ubuntu和树莓派_第4张图片
这里下载的是当前更新的最新版frp_0.29.0_linux_amd64.tar.gz

wget https://github.com/fatedier/frp/releases/download/v0.29.0/frp_0.29.0_linux_amd64.tar.gz

VNC+frp实现远程访问Ubuntu和树莓派_第5张图片
可能下载有点慢,等待一会儿

  • 第二步配置frp

下载完之后进行解压:

tar -xzvf frp_0.29.0_linux_amd64.tar.gz

VNC+frp实现远程访问Ubuntu和树莓派_第6张图片
解压之后,找到frps.ini这个文件,并打开:

cd frp_0.29.0_linux_amd64
sudo nano frps.ini

参考frps_full.ini,添加一下内容:

[common]
bind_port = 7000  

token = 12345678  

dashboard_port = 7500 
dashboard_user = admin 
dashboard_pwd = admin

max_pool_count = 5
log_file = ./frps.log  
log_level = info
log_max_days = 3

VNC+frp实现远程访问Ubuntu和树莓派_第7张图片
保存,退出。
把云服务器的7000,7500等相应的端口放行。我这里的后台管理端口是7600,不是上面的 7500。
在当前目录下运行frps:

nohup ./frps -c ./frps.ini &

查看7600端口是否在监听

netstat -ap | grep 7600

在这里插入图片描述
测试后台能否打开:

#云服务器公网ip + 7600
http://x.x.x.x:7600

记得x.x.x.x替换为自己公网ip地址,提示输入账户密码,默认admin
界面是这样的:
VNC+frp实现远程访问Ubuntu和树莓派_第8张图片
至此,服务端frp部署成功了

3. Ubuntu上部署(客户端)

  • 第一步:Ubuntu打开桌面共享

这里操作的Ubuntu系统版本是16.0.4
搜索出桌面共享,输入sharing
VNC+frp实现远程访问Ubuntu和树莓派_第9张图片
点击打开“Desktop Sharing”,勾选如下配置:

VNC+frp实现远程访问Ubuntu和树莓派_第10张图片
第3那里要设置访问密码,并记住。

  • 第二步:配置frpc

下载frp_0.29.0_linux_amd64.tar.gz,解压后打开frpc.ini

tar -xzvf frp_0.29.0_linux_amd64.tar.gz
cd frp_0.29.0_linux_amd64
sudo nano frpc.ini

添加一下内容:

[common]
server_addr = x.x.x.x  
server_port = 7000   
token = 12345678	  

[ubuntu-ssh]         
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 8085  

[ubuntu-vnc]        
type = tcp
local_ip = 127.0.0.1
local_port = 5900 
remote_port = 5910   

x.x.x.x要替换为自己的公网ip
VNC+frp实现远程访问Ubuntu和树莓派_第11张图片
在当前目录下运行frpc.ini文件:

nohup ./frpc -c ./frpc.ini &

在这里插入图片描述
查看一下后台,看看是否在线
VNC+frp实现远程访问Ubuntu和树莓派_第12张图片
说明部署成功了。

  • 第三步:加入开机启动

打开Ubuntu的/etc/rc.local开机启动文件:

sudo nano /etc/rc.local

添加自己的文件启动路径:

nohup  x/x/frpc -c x/x/frpc.ini &

x/x/需要替换掉,如果不知道frpc路径,可以

pwd

在这里插入图片描述
这里的路径如下:
VNC+frp实现远程访问Ubuntu和树莓派_第13张图片
添加完之后,保存退出。

4.树莓派上部署(客户端)

这里用的是树莓派3b+
下载的是arm文件:
VNC+frp实现远程访问Ubuntu和树莓派_第14张图片
下载后解压,同样是打开frpc.ini文件:
在这里插入图片描述

sudo nano frpc.ini

和上面Ubuntu配置frpc一样,只是改了端口和名称,箭头所示:
VNC+frp实现远程访问Ubuntu和树莓派_第15张图片
记得云服务器上开放相应端口段,如:5900-6000,22, 80等。

加入开机启动:
刚开始尝试了直接在 rc.local里启动frpc失败。
参考这篇博文:https://blog.csdn.net/zmy12007/article/details/84642081,树莓派开机后让frpc.ini延迟启动即可

sudo nano startfrpc.sh

添加一下内容:

#/bin/bash
cd /home/pi/frp_0.29.0_linux_arm
echo "start frpc from shell" >> ./log.txt
sleep 15s
nohup ./frpc -c ./frpc.ini &

VNC+frp实现远程访问Ubuntu和树莓派_第16张图片
保存退出
添加文件权限

sudo chmod +x startfrpc.sh

接着打开rc.local文件

sudo nano /etc/rc.local

添加如下内容:

echo "start rc.local" > /home/pi/rc.log

nohup /bin/bash /home/pi/startfrpc.sh &

VNC+frp实现远程访问Ubuntu和树莓派_第17张图片
保存, 退出
重启树莓派:

sudo reboot

查看一下后台,看看是否在线:
在这里插入图片描述
至此,树莓派部署成功了。

5.远程连接

这里用win10系统连接Ubuntu和树莓派

5.1 远程连接Ubuntu

vnc连接:
到官网下载vnc:https://www.realvnc.com/en/connect/download/viewer/相对应版本的vnc viewer
VNC+frp实现远程访问Ubuntu和树莓派_第18张图片
下载后安装,打开VNC Viewer软件
输入 公网ip + 端口号

VNC+frp实现远程访问Ubuntu和树莓派_第19张图片
VNC+frp实现远程访问Ubuntu和树莓派_第20张图片
这个密码是Ubuntu桌面共享时配置的密码,输入密码后确定,这样就完成了远程了连接
VNC+frp实现远程访问Ubuntu和树莓派_第21张图片
ssh连接:

ssh -oPort=8085 [email protected]

端口8085,ubuntu 为用户名 ,x.x.x.x为公网ip
此时,出现了错误:
ssh_exchange_identification: Connection closed by remote host
在这里插入图片描述
查看ssh是否安装:

sudo ps -e |grep ssh

VNC+frp实现远程访问Ubuntu和树莓派_第22张图片
结果没有安装,需要安装一下:

sudo apt-get update
sudo apt-get install openssh-server

再次查看sudo ps -e |grep ssh是否安装
在这里插入图片描述
出现了sshd,说明安装成功了。
再次尝试ssh:
VNC+frp实现远程访问Ubuntu和树莓派_第23张图片
出现了错误“ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!”,打开C:\Users\Administrator\.ssh下文件,用记事本打开known_hosts,删除选中的部分
VNC+frp实现远程访问Ubuntu和树莓派_第24张图片
再试一下,输入ubuntu登录密码成功:
VNC+frp实现远程访问Ubuntu和树莓派_第25张图片

5.2 远程连接树莓派

vnc连接:
打开树莓派的vnc和ssh:
VNC+frp实现远程访问Ubuntu和树莓派_第26张图片
VNC+frp实现远程访问Ubuntu和树莓派_第27张图片
重启树莓派

reboot

重启后右上角会出现vnc图标,单击图标打开,选择Option选项
VNC+frp实现远程访问Ubuntu和树莓派_第28张图片
VNC+frp实现远程访问Ubuntu和树莓派_第29张图片
安全项,进行访问密码配置,记住密码

在win10上,打来VNC Viewer软件,输入公网ip+端口,再输入访问密码

远程访问成功
VNC+frp实现远程访问Ubuntu和树莓派_第30张图片
ssh连接:

ssh -oPort=8086 [email protected]

端口8086,pi为用户名 ,x.x.x.x为公网ip
VNC+frp实现远程访问Ubuntu和树莓派_第31张图片
ssh连接成功!

搭建方式二:无公网服务器情况下

推荐这种搭建,方便快捷。注意:这里通过win10远程访问Ubuntu和树莓派,win10安装VNC Viewer ,而Ubuntu和树莓派安装的是VNC Server。当然Ubuntu和树莓派也可以安装VNC Viewer来远程访问其它设备,根据自己需求来。

1.Ubuntu上部署

1.1 安装

首先在ubuntu 上安装VNC Server。
可以到官网下载:https://www.realvnc.com/en/connect/download/vnc/linux/
找到相对应的版本。
或者通过命令下载安装:

wget https://www.realvnc.com/download/file/vnc.files/VNC-Server-6.4.1-Linux-x64.deb

安装:

sudo dpkg -i VNC-Server-6.4.1-Linux-x64.deb

VNC+frp实现远程访问Ubuntu和树莓派_第32张图片
查看运行情况:

ps aux|grep vnc

VNC+frp实现远程访问Ubuntu和树莓派_第33张图片
想要卸载的话:

sudo apt-get purge realvnc-vnc-server

卸载vnc viewer:

sudo apt-get purge realvnc-vnc-viewer

1.2 配置

在图形界面搜索VNC Server,输入Ubuntu管理员密码并打开
VNC+frp实现远程访问Ubuntu和树莓派_第34张图片
右上角会有个图标,右击选择Licensing...打开
VNC+frp实现远程访问Ubuntu和树莓派_第35张图片
弹出一个注册界面,没有VNC账号先注册一个

VNC+frp实现远程访问Ubuntu和树莓派_第36张图片
输入账号密码,点击sign in,出现如下界面:
VNC+frp实现远程访问Ubuntu和树莓派_第37张图片
上图中填写的密码是你远程连接时候用到的密码,即远程连接密码,不能和vnc账户密码相同,填写一下,点击下一步,选择家庭订阅非商业用途(Home subscription),接着点击next,起个名字,我这里是ubuntu,接着点击完成即可。
VNC+frp实现远程访问Ubuntu和树莓派_第38张图片

1.3 连接

接下来我们用win10远程连接乌班图,打开win10上的VNC Viewer
登录VNC账号,在地址栏中直接输入ubuntu ,输入远程连接的密码
VNC+frp实现远程访问Ubuntu和树莓派_第39张图片
这样就连接上了,随时随地的访问远程电脑了。
VNC+frp实现远程访问Ubuntu和树莓派_第40张图片

2.树莓派上部署

和ubuntu基本类似步骤,树莓派好的一点是已经预装的有vnc server了。
可以参考上面搭建方式一中的步骤打开树莓派的VNC
选择第一项,下一步
VNC+frp实现远程访问Ubuntu和树莓派_第41张图片
设置访问名字,可以看到已经有一个存在了。
VNC+frp实现远程访问Ubuntu和树莓派_第42张图片
点击Apply。完成退出

在win10中的VNC Viewer 中登录账号就看到了要访问的树莓派。
VNC+frp实现远程访问Ubuntu和树莓派_第43张图片
如果不想那么费事,或者没有云服务器的,还是推荐第二种搭建方式,整体体验上比第一种要流畅一些。

Reference:
https://help.realvnc.com/hc/en-us/categories/360000301637-Documentation

你可能感兴趣的:(Linux,树莓派Raspberry,Pi)