樹莓派搭建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
相關文章
相關標籤/搜索