Frp內網穿透搭建,家庭主機對外提供介面,支援ssh訪問

wang_xiaohao發表於2021-12-27

Frp內網穿透搭建,家庭主機對外提供介面,支援ssh訪問

1.使用場景:

需求1.家中伺服器 ubuntu 主機,跑介面服務,需要對外暴漏,
需求2.同時需要在外網ssh遠端

​ 關鍵詞: frp內網穿透斐訊K3C 使用frp服務ubuntu開啟sshservice

​ 以下是記錄:

2.所需工具:

1.公網VPS一臺

​ 搭建frp服務,這裡使用TX云為例,需要配置安全組開啟指定埠

​ 可以使用Xshell正常登入

​ [申請,註冊VPS,不在本文討論範圍,請自行搜尋]

2.路由器

​ 支援Frp設定,這裡使用斐訊K3C為例,使用openwrt也可以

​ 注意,frp版本要和伺服器一致]

​ 如果使用主機裝置當作Frp客戶端,大致方式一致,可以參考官方文件,或者搜搜

3.本地Ubuntu 主機

​ 家中Ubuntu 主機,部署介面服務,支援外網訪問,同時支援外網ssh到主機 ,後面需要裝sshserver

4.其他

​ Xshell 工具,免費授權下載地址

3.部署步驟

1.VPS 安裝 Frp 服務

​ Xshell登入vps,檢視vps架構,一般是x86_64 ,輸入 arch 檢視

root@VM-16-5-ubuntu:~/frp/frp_0.21.0# arch
x86_64

開啟 frp 首頁,右側選擇 Releases 66 ,或者直接開啟下載地址

選擇適合的平臺,一般是 frp_0.38.0_linux_amd64.tar.gz

注意,這裡的版本是0.38.0,後續路由器版本不一致,無法識別,需要降級

下載後,上傳到 vps,解壓 ,

使用Xshell,新建專案目錄,cd 到專案目錄,直接把 下載檔案到xshell視窗,等待上傳完畢

配置 frps.ini 檔案,可以使用 寶塔或者vim ,注意這個檔案,後面客戶端配置需要和它保持一致

配置引數:基本都在註釋裡了

[common]
frps繫結埠 (必選)
bind_port = 7000
認證密碼,客戶端須與伺服器一致
token = 123456
儀表盤埠,只有設定了才能使用儀表盤(即後臺)
dashboard_port = 7500
儀表盤訪問的使用者名稱密碼,如果不設定,則預設都是 admin
dashboard_user = admin
dashboard_pwd = admin

最後,重要一步,啟動frp服務

frpc -c ./frpc.ini

看到 start proxy success 表示成功

這樣啟動服務,視窗關閉就會停止,可以使用後臺啟動

sudo nohup /root/frp/frp_0.21.0/frps -c /root/frp/frp_0.21.0/frps.ini &

如果提示 沒有nohup,請安裝

2.路由器配置Frp客戶端對映

frp服務端配置完畢,可以嘗試開啟皮膚,檢視是否可以正常登入,使用者名稱密碼 admin 剛才配置的

frp皮膚地址:vps地址:7500

這裡的7500,是在上面配置的,可以修改

注意:如果打不開?,請檢查vps安全策略,需要放行埠號,開啟防火牆-新增規則-新增 7500 和 7000 埠

配置完畢效果

接下來配置客戶端

我使用的路由器frp外掛,直接在路由器配置,如果使用frp客戶端,配置方式差不多,請參照官方文件

路由器配置,開啟路由器後臺,找到frp服務,複製貼上以下配置

frp客戶端配置:

[common]
server_addr = xxx.xxx.xxx.xxx
server_port = 7000
token = 123456

[web]
type = tcp
local_ip = 192.168.2.157
local_port = 8080
remote_port = 8080

[ssh]
type = tcp
local_ip = 192.168.2.157
local_port = 22
remote_port = 6022

引數解釋

[common]
server_addr = xxx.xxx.xxx.xxx 伺服器地址,就是你vps地址
server_port = 7000 伺服器埠號,保持和vps 剛才配置的frps.ini一致
token = 123456 服務密碼,保持和vps剛才配置的frps.ini一致

[web] 這就是名字,在皮膚顯示,以視區分,看下圖皮膚名字
type = tcp 連線方式,一般就選tcp,其他我也不會
local_ip = 192.168.2.157 這裡是本地主機地址,例如就是我ubuntu主機地址,裝置自己可以在wifi資訊中檢視
local_port = 8080 本地埠對映,意思就是,ubuntu主機暴漏的埠
remote_port = 8080 遠端埠對映,意思就是,vps主機埠

[ssh] 備註名字
type = tcp
local_ip = 192.168.2.157
local_port = 22
remote_port = 6022

local_port和 remote_port 開始不好理解,這裡解釋下
我理解就是,假如本地主機ubuntu需要暴漏8080介面提供tomcat服務,在外網訪問vps主機8080埠,vps會請求本地主機8080埠
當然,斷後不一定是一樣的,後面配置的 6022對應22埠就是例子
當ssh請求vps6022埠,可以請求到主機22埠[設定ssh預設埠]

簡單畫個圖,希望能幫助理解

開啟Frp皮膚檢視frp服務端和客戶端繫結狀態

斐訊路由器- 功能設定-示例

順利到這裡,基本就配置成功了

3.測試
1.8080埠

​ 本地主機ubuntu,安裝docker,開啟tomcat服務,暴漏8080埠,

​ 先測試區域網可以正常訪問,

​ 將電腦切換到手機熱點,訪問 vps:8080 ,可以正常訪問到本地主機的tomcat頁面,證明成功

2..遠端shell到家中主機

​ 剛才已經將本地主機22埠暴漏

​ 需要訪問家中主機,只需要xshell配置,伺服器地址 : vps地址:6022

​ 使用者名稱密碼: ubuntu 使用者賬戶和密碼

​ 這裡發現,連不上 。。。。

​ 因為,一般ubuntu主機只安裝ssh客戶端,不安裝服務端

sudo apt install openssh-server

安裝完成後,SSH服務將自動啟動。要驗證安裝是否成功並且SSH服務正在執行,請鍵入以下命令,該命令將顯示SSH伺服器狀

sudo systemctl status ssh

再次xshell遠端主機,順利的話,成功!

4.附錄:

1.禁止伺服器休眠

發現ubuntu會自動休眠

參考:伺服器ubuntu 20.04關閉自動休眠模式

檢視是否開啟休眠模式
systemctl status sleep.target
yaron@yaron-T420s:~$ systemctl status sleep.target

返回結果
● sleep.target - Sleep
Loaded: loaded (/lib/systemd/system/sleep.target; static; vendor preset: enabled)
Active: inactive (dead)
Docs: man:systemd.special(7)

執行關閉休眠功能的命令,如下
yaron@yaron-T420s:~$ sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target
[sudo] yaron 的密碼:
Created symlink /etc/systemd/system/sleep.target → /dev/null.
Created symlink /etc/systemd/system/suspend.target → /dev/null.
Created symlink /etc/systemd/system/hibernate.target → /dev/null.
Created symlink /etc/systemd/system/hybrid-sleep.target → /dev/null.

再次檢視
yaron@yaron-T420s:~$ systemctl status sleep.target
● sleep.target
Loaded: masked (Reason: Unit sleep.target is masked.)
Active: inactive (dead)
yaron@yaron-T420s:~$

2.服務後臺執行

​ 開啟定製任務或者後臺執行

sudo nohup /root/frp/frp_0.21.0/frps -c /root/frp/frp_0.21.0/frps.ini &

3.xshell配置


感謝以下作者:

FRP內網穿透搭建與使用

Frps、nginx內網穿透安裝與配置

Frp介紹 Frp官方文件 下載地址

Tcping下載地址 帶埠Ping測試

在Ubuntu上啟用SSH

編輯器支援markdown有點彆扭,很多程式碼引用還要自己改? 用的Typora

相關文章