树莓派搭建git服务器并实现公网访问(一)共2篇—安装frp实现内网SSH穿透

为了使家中的树莓派能经过公网访问,咱们须要一款内网穿透软件,笔者在这里选择的是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端口号便可查看仪表盘页面以下:工具

clipboard.png

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
相关文章
相关标签/搜索