遠程跳板機搭建——內網穿透
- 前言
- 一、介紹
- 二、實作方法
- 方法一:
- 方法二:
- 方法三:【推薦】
- 1、介紹
- 2、環境描述
- 3、下載軟體
- 4、服務端frps
- 5、客戶端ftpc
- 6、連接
- 7、擴展——多ssh
前言
之前作業中搭建過遠程跳板機,就是通過一臺阿里云虛機,通過他的公網地址指定埠號來訪問公司內部的環境,可以進行直接登錄,最近換了一個作業環境他們也是通過阿里云虛機來實作遠程訪問,實作方法和我使用的不同,所以記錄下,
一、介紹
遠程跳板機搭建使用的場景就是本身環境是沒有外部網路的或者是因為安全原因不能直接連接外網,那么我們就可以拿出一臺服務器或者筆記本,它可以登錄內部的環境然后配置上外網,然后準備一臺外網的虛機,開放虛機的埠【10022】將外網虛機和本地的服務器進行網路設定,這樣我們就可以通過虛機IP:10022直接登錄到內部的機器上了,
實作方法現在是三種:
- 通過ssh命令實作反向地址決議,通過一條命令就可以實作;
- 也是通過ssh的命令來進行實作;
- 通過frp服務來實作;
環境準備:
我使用的本地就是自己的一臺虛機,然后通過青云買了一臺外網的ECS虛機,
| Role | OS | IP |
|---|---|---|
| 本地機器 | centos7.6 | 192.168.144.10 |
| 青云RCS虛機 | centos7.6 | 139.198.9.32 |
接著打開青云虛機的埠(打開10022-10024埠)

二、實作方法
方法一:
第一種方法只需要在本地的機器上執行就好,外網的虛擬機需要打開埠10022然后允許訪問就好了,說白了就是創建一個秘鑰然后執行一條命令的事情,這樣我們就可以通過虛機IP:10022來訪問到本地的機器了,
首先在虛機上將埠打開,【環境配置】
接著在本地機器上創建一個密鑰對,
ssh-keygen
ll ~/.ssh/id_rsa
ll ~/.ssh/id_rsa.pub

接著將生成秘鑰的公鑰復制放到外網虛機的主機決議檔案中
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQD6Mtst3k/6qdkIkpMeTqe106SZJ08AUDnNNHc8hKVETY9OIDr/ktYg4hid7O5JM6zWjn5v6jg8OkLjhsIegkbc0hcQTsoJZzC358hP365YhqHfutT09P6CSnsov2jhu7KtNZPBoOh2z0KxI3w9aBNXhoj7bcgpjAA8e3nS7q7TPPkPBK2yQHnjlfBXbdWDuGIRrb9c+5G4oso2/k8jd+QyDGHP55GcKQOkJSaGudeY28UnzDJwOULVpMi//vEsmUwYa21FLiDpvDPcQZ0N8DTSHM+Yf07d+HtMuILNdEPC8AaC0mQWHZ/OgOc0/ZMt7jqiOhoRgCbbGsIK/2q0I+9x root@vlinx144010.com

ll ~/.ssh/authorized_keys
vim ~/.ssh/authorized_keys
cat ~/.ssh/authorized_keys

接著還是在外網虛機上對ssh服務進行一定的配置
vim /etc/ssh/sshd_config
#GatewayPorts no
GatewayPorts yes
systemctl restart sshd


接著回到本地的機器上執行命令
ssh -qTfnN -R 10022:192.168.144.10:22 -i ~/.ssh/id_rsa -o PreferredAuthentications=publickey -oServerAliveInterval=60 root@139.198.9.32
-R 10022埠是外網虛機開放的埠,我們訪問的時候也會用到;192.168.144.10的ip是本地的地址
root@139.198.9.32 這是我們外網虛機的公網地址

接著我們可以通過xshell創建session指定ip地址是外網虛機的+埠是我們指定的10022

這時候發現無法連接了,這就尷尬了,外網虛機上放通埠的時候是10022-10024,

我可以在添加一個命令將10023加上去
ssh -qTfnN -R 10023:192.168.144.10:22 -i ~/.ssh/id_rsa -o PreferredAuthentications=publickey -oServerAliveInterval=60 root@139.198.9.32

修改下shell中session的埠號

這時候在連接就沒問題的,直接就登錄到我本地的機器上了,

總結:
- 這種方式優點,配置簡單,一個秘鑰一條命令就可以從外網通過埠來訪問本地的機器了,
- 缺點就是對網路依賴大,如果本地的網路中斷那么你外面訪問也會中斷,還有就是訪問次數的限制,如果訪問的人數多也會導致連接出問題,
方法二:
方法二安裝的程序比方法一更加簡單只需要安裝一個autossh軟體就可以了,然后通過執行命令指定之后就可以進行連接了,
首先還是外網虛機需要放通10022埠【環境配置】
接著本地服務器上安裝軟體
yum search autossh
yum install -y authssh

接著執行命令
autossh -M 12345 -TfN -R 10022:192.168.144.10:22 root@139.198.9.32

引數解釋:
? -M 12345 ,-M后面指定的是埠,監控這個連接如果斷了會進行重新連接
? -f ,后臺執行ssh指令
? -C,允許壓縮資料
? -N,不執行遠程指令
? -R,將外網虛機的埠轉發到本地的埠
? -L,將本地機器的某個埠轉發到遠端機器的埠
? -p,指定遠程主機的埠
這時候我們通過shell創建session來連接就可以到本地的機器了


總結:
- 這種方式優點還是配置簡單,安裝一個軟體,執行一個命令,就可以成立;
- 缺點話通過命令指定,如果網路波動或者是訪問用戶過多都會影響訪問的質量;
方法三:【推薦】
方法三是通過兩個軟體來實作的xinetd來開放埠,接著frpc來實作鏈路的創建
frpc官方檔案
參考檔案
1、介紹
frp是一個專注于內網穿透的高性能的反向代理應用,支持TCP、UDP、HTTP、HTTPS的多種協議,可以將內網服務以安全、便捷的方式通過具有公網IP節點的中轉暴露到公網,
frp = 【服務端】frps放到外網主機+ 【客戶端】frpc放到內網主機,服務器端就是外網主機一般都是具有公網IP的機器上,客戶端通常部署在需要穿透的內網服務器上面,
內網由于沒有公網IP所以不能被非局域網的其他用戶訪問,用戶需要通過訪問frps,由frp將請求的埠或者其他資訊將請求的路由到對應的內網機器上去,從而實作通信,
2、環境描述
? 準備兩臺機器,一臺是青云創建的虛機 + 一臺是本地Vmware創建的虛機,
? ——》青云的機器就是帶著外網的虛機作為【服務端】安裝【frps】
? ——》本地的Vmware虛機就是作為公司內部環境的服務器或者是跳板機
3、下載軟體
-
可以直接登錄到GitHub上面下載
PS:到頁面上可以看到不同的版本的軟體,freebsd的、Linux的、arm架構的、windows的、原始碼的,根據自己的環境來進行選擇
-
直接通過wget下載:
wget https://github.com/fatedier/frp/releases/download/v0.34.3/frp_0.34.3_linux_amd64.tar.gz
4、服務端frps
4.1、查看下載的壓縮包,有8.2M還可以不是太大

4.2、解壓tar包然后進入編輯組態檔
注意,確定要編輯的是frps還是frpc,這兩個組態檔都是在一起的,——》我這是服務端那就是frps.ini
tar -xf frp_0.34.3_linux_amd64.tar.gz
cd frp_0.34.3_linux_amd64/
vim frps.ini

4.3、配置server端內容
[common]
#frp監聽埠,默認時7000,可以修改,這里修改了在frpc.ini中也是要修改的,
bind_port = 7000
#授權碼,就是frps和frpc進行驗證的內容,兩個組態檔必須撰寫相同,如果是生產環境復雜點,我這隨便
token = 12345678
#frp管理后臺埠,根據自己需求修改;frp提供了一個web頁面我們可以通過公網IP:7500來進行訪問,可以改可不改
dashboard_port = 7500
#frp管理后臺用戶名和密碼,就是登陸管理后臺的方式,生產環境修改的復雜點,我這隨便
dashboard_user = admin
dashboard_pwd = admin
enable_promethes = true
#frp日志的配置(位置、級別、最大存放時間)
log_file = /var/log/frps.log
log_level = info
log_max_days = 3

4.4、設定和啟動frp服務
#創建frp服務家目錄
mkdir -p /etc/frp
#將主組態檔、執行檔案、啟動檔案復制到指定位置,這里或者使用ln -s做成軟連接也是可以的
cp /root/frp_0.34.3_linux_amd64/frps.ini /etc/frp
cp /root/frp_0.34.3_linux_amd64/frps /usr/bin/
cp /root/frp_0.34.3_linux_amd64/systemd/frps.service /usr/lib/systemd/system/
#啟動服務查看狀態
systemctl enable --now frps
systemctl status frps

4.5、防火墻設定
如果系統開啟防火墻的話需要將后臺管理的埠放開,但是我使用的青云的虛機,直接在安全組中配置就好了,作業系統中不用對防火墻進行操作

4.6、青云虛機打開對應的埠

這時候在本地通過公網IP:7500登錄頁面,輸入frps.ini組態檔中設定的用戶名密碼就可以看到frp的后臺管理頁面了,
http://139.198.9.32:7500

我們現在只配置服務端所以啥都沒得,

5、客戶端ftpc
5.1、上傳frp的壓縮包
我們可以下載好了通過xshell上傳或者是通過wget下載
wget https://github.com/fatedier/frp/releases/download/v0.34.3/frp_0.34.3_linux_amd64.tar.gz

5.2、解壓tar包然后進入編輯組態檔
tar -xf frp_0.34.3_linux_amd64.tar.gz
cd frp_0.34.3_linux_amd64/
vim frpc.ini

5.3、配置client端內容
[common]
#服務端配置(公網IP地址、服務端監聽埠號、授權碼),和服務端對應
server_addr = 139.198.9.32
server_port = 7000
token = 12345678
#配置ssh服務,就是遠程連接用的還是ssh服務
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 10022 #這個埠是我們青云虛機上放通的埠
#配置http服務,可以用于小程式開發、遠程除錯,我現在是內網穿透,沒啥用
[web]
type = http
local_ip = 127.0.0.1
local_prot = 8080
subdomain = test.hi.jk.pw
remote_port = 10023

5.4、防火墻
如果系統開啟了防火墻那么就需要將組態檔中的埠進行放通,我這里防火墻是關閉的,不用設定

6、連接
在客戶端的frpc啟動之后可以到frps的頁面上查看下,已經多了一個我們設定的埠了,

在xshell上創建session進行連接

這時候可以正常登錄就沒有問題了

7、擴展——多ssh
內網穿透就是為了讓我們可以通過一個對外的IP來訪問公司內網的環境,使用遠程的連接方式不止一套環境或者是不止一個主機,這種情況下怎么辦?——》首先在服務端,暴露更多的埠;然后在客戶端的frpc.ini中撰寫更多的【ssh】就可以了,
PS:【ssh】中括號中的內容可以自己寫,隨便寫,按照自己的環境名來進行撰寫,
[vlinx144010]
type = tcp
local_ip = 192.168.144.10
local_port = 22
remote_port = 10023 #外網主機打開的埠

修改組態檔重啟下服務
systemctl restart frpc.service

我們可以在frp的dashboard上面進行查看就發現多了一個,這里顯示的name和我們配置的相同,

總結:
? 通過frp軟體實作內網穿透的方式,和上面兩種比起來的話配置還是多了很多的,但是運行起來的話還是比一個命令安全、穩定很多的,好歹是一個應用程式,而且frp方式多埠的時候只需要修改組態檔重啟服務生效就可以了,如果是上面的方法那就是需要一個埠對應執行一條命令,命令的執行還是不太穩定的,如果開放的埠量級比較大,十個、二十個的時候,還是frp這種修改組態檔的方式方便些,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/245298.html
標籤:其他
上一篇:開機自安裝linux驅動模塊
