使用frp進行內網穿透,實現ssh遠程訪問Linux服務器


搭建一個完整的frp服務鏈需要:

  1. VPS一台(也可以是具有公網IP的實體機)

  2. 訪問目標設備(就是你最終要訪問的設備)

  3. 簡單的Linux基礎(如果基於Linux配置的話)

我這里使用了騰訊雲服務器作為服務端(Ubuntu Server 20.04 LTS)、本地Linux虛擬機作為要訪問的客戶端(Ubuntu 20.04 LTS)和本地Xshell(用於遠程連接客戶端)進行測試。

最后是想把實驗室的電腦進行內網穿透實現 ssh 遠程訪問。

流程很簡單,服務端和客戶端都下載 frp 配置文件,分別修改配置(地址、端口映射),然后啟動運行即可。本文基於 Linux 配置,macOS 和 Windows 流程一致,最多是命令可能有點區別。


服務端配置

下載 frp 的安裝包(GitHub連接在此),注意服務端和客戶端要同一版本。我這里是64位Linux,最新版是0.38.0,根據需要選擇即可,速度太慢自己想辦法,可以考慮本地下了通過ftp傳到服務器。

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

解壓,文件夾改名為frp,方便使用。騰訊雲可能把這玩意當作木馬,去控制台信任即可。

tar -zxvf frp_0.38.0_linux_amd64.tar.gz
cp -r frp_0.38.0_linux_amd64 frp
cd frp

看一下文件夾下的內容:

ubuntu@VM-0-10-ubuntu:~/frp$ ls -a
.  ..  frpc  frpc_full.ini  frpc.ini  frps  frps_full.ini  frps.ini  LICENSE  systemd

我們只需要關注如下幾個文件

  • frps

  • frps.ini

  • frpc

  • frpc.ini

前兩個文件(s結尾代表server)分別是服務端程序和服務端配置文件,后兩個文件(c結尾代表client)分別是客戶端程序和客戶端配置文件。因為我們正在配置服務端,可以刪除客戶端的兩個文件(刪不刪無所謂),然后修改frps.ini文件。

rm frpc 
rm frpc.ini

vim frps.ini

frps.ini文件內容如下:

[common]
bind_port = 7000

bind_port表示用於客戶端和服務端連接的端口,默認綁定 7000 端口,雲服務器注意打開相應端口。其實還有其他參數可選配置實現其他功能,這里只實現ssh遠程訪問,不作討論。

編輯完成后即可保存,運行服務端應用:

./frps -c frps.ini

如下則成功運行:

2021/12/12 00:32:59 [I] [root.go:200] frps uses config file: frps.ini
2021/12/12 00:32:59 [I] [service.go:192] frps tcp listen on 0.0.0.0:7000
2021/12/12 00:32:59 [I] [root.go:209] frps started successfully

此時的服務端僅運行在前台,如果 Ctrl+C 停止或者關閉 SSH 窗口后,frps 均會停止運行,因而我們使用 nohup 命令將其運行在后台。nohup命令可以讓你的shell命令忽略SIGHUP信號,即可以使之脫離終端運行;“&”可以讓你的命令在后台運行。

nohup ./frps -c frps.ini &

此時可先使用Ctrl+C關閉nohup,frps依然會在后台運行,使用jobs命令查看后台運行的程序jobs在結果中我們可以看到frps正在后台正常運行:

[1]+  Running                 nohup ./frps -c frps.ini &

客戶端配置

以同樣的方式下載 frp

wget https://github.com/fatedier/frp/releases/download/v0.38.0/frp_0.38.0_linux_amd64.tar.gz
tar -zxvf frp_0.38.0_linux_amd64.tar.gz
cp -r frp_0.38.0_linux_amd64 frp
cd frp
vim frpc.ini

frpc.ini文件內容如下:

[common]
server_addr = 127.0.0.1
server_port = 7000

[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000

common字段下的三項即為服務端的設置。

  • server_addr為服務端IP地址,自行更改。

  • server_port為服務器端口,填入你設置的端口號即可,如果未改變就是7000。

[xxx]表示一個規則名稱,自己定義,便於查詢即可。這里用於 ssh 所以命名為 [ssh] 了。

  • type 連接類型,默認為 tcp,如有需要請自行查詢 frp 手冊。

  • local_ip 本地 IP

  • local_port 用於 ssh 的端口號,默認 22

  • remote_port 映射的服務端端口,訪問該端口時默認轉發到客戶端的 22 端口,不同的客戶端設置不同的端口號。

配置好后可以使用同樣的方法后台運行客戶端程序:

nohup ./frpc -c frpc.ini &

測試

啟動完成后就可以通過 ssh 連接到內網服務器了,同時也可以用 sftp 傳輸文件。

ssh -p 6000 user@host 

參考

[1] 使用 frp 進行服務器內網穿透

[2] 使用frp進行內網穿透

[3] 如何使用 frp 實現內網穿透

[4] win10下用frp內網穿透實現ssh遠程連接linux服務器(Windows可參考這篇)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM