为了使家中的树莓派能经过公网访问,咱们须要一款内网穿透软件,笔者在这里选择的是frp,相比其余方式具备开源免费,配置简单,无故口数限制的优点。linux
下载地址:https://github.com/fatedier/f...git
1、下载安装包
服务端和客户端都在同一个安装包里,但须要根据本身系统分别下载对应的安装包
笔者树莓派安装32位CentOS操做系统,做为客户端下载的版本为frp_0.21.0_linux_arm.tar.gz
服务端为某云服务器安装64位CentOS操做系统,做为服务端下载版本为frp_0.21.0_linux_amd64.tar.gzgithub
2、配置
将压缩包分别解压,能够看到frps为服务端启动脚本,frpc为客户端启动脚本。
服务端建立frps.ini文件,具体配置项能够参照frps_full.ini文件
客户端建立frpc.ini文件,具体配置项能够参照frpc_full.ini文件浏览器
笔者服务端配置以下:服务器
[common] # frp 服务端端口(必须) bind_port = 7000 # frp 服务端密码(必须) token = 请设置本身的密码 # 认证超时时间,因为时间戳会被用于加密认证,防止报文劫持后被他人利用 # 所以服务端与客户端所在机器的时间差不能超过这个时间(秒) # 默认为900秒,即15分钟,若是设置成0就不会对报文时间戳进行超时验证 authentication_timeout = 0 # 仪表盘端口,只有设置了才能使用仪表盘(即后台) dashboard_port = 7500 # 仪表盘访问的用户名密码,若是不设置,则默认都是 admin dashboard_user = admin dashboard_pwd = admin
客户端配置以下:网络
[common] server_addr = 请填写云服务器ip地址 server_port = 7000 token = 请填写服务端设置的密码 [ssh] type = tcp local_ip = 127.0.0.1 local_port = 22 use_encryption = false use_compression = false remote_port = 6001
3、运行
服务端启动:nohup ./frps -c ./frps.ini &
客户端启动:
客户端因为远程操做须要重启系统或者客户端进程被意外杀掉后,服务端没法再链接上。为了能保证客户端服务的高可用只设置客户端开机自启是不行的,笔者的处理办法为加一个定时脚本每隔一段时间扫描客户端进程,若是不存在就启动。
笔者的定时启动脚本以下monitor.sh:ssh
#!/bin/sh Monitor() { ps -fe|grep frpc |grep -v grep if [ $? -ne 0 ];then echo "start process....." nohup /usr/local/frp/frp_0.21.0_linux_arm/frpc -c /usr/local/frp/frp_0.21.0_linux_arm/frpc.ini & fi } Monitor>>/usr/local/frp/monitor.log
编辑 /etc/crontab文件在最后一行加入如下代码,设置每一分钟扫描一次tcp
*/1 * * * * root /bin/sh /usr/local/frp/monitor.sh
4、完结
在浏览器访问服务端IP地址加映射的SSH端口号便可查看仪表盘页面以下:工具
SSH工具配置服务端IP地址,端口为映射的SSH端口(此处笔者的为6001),用户名和密码为客户端的用户名密码,便可经过公网直接访问局域网内的机器了。加密
另外若是服务端配置设置了authentication_timeout参数且不为0须要保证客户端和服务端时间同步,否则会启动失败。
须要设置的同窗能够参照如下方式进行设置:
ntpdate 0.asia.pool.ntp.org #同步网络时间 timedatectl set-timezone Asia/Shanghai #设置时区
然而树莓派并不像咱们目前的笔记本或者主机同样存在cmos电池,在断电以后,时间就停留在当前这个时间点,下次开机依然从此次开始。
所以可参照前边在定是脚本文件加入如下代码:
/1 * * * * ntpdate 0.asia.pool.ntp.org