1. 程式人生 > >外網通過ssh代理連線內網伺服器

外網通過ssh代理連線內網伺服器

內網伺服器通過公網ssh代理實現內網穿透

前言

有時需要通過外網連線到內網的伺服器。

  • 前提:需要有廣域網伺服器,伺服器之間免密。

1 環境

伺服器型別 系統 主機名 使用者名稱 IP 說明
客戶端 Window 10 node1 本機 ssh連線工具(例如:Xshell)
中轉伺服器 ubuntu 16.04 node2 user2 8.8.8.8 有廣域網IP
目標伺服器 ubuntu 16.04 node3 user3 172.16.156.101 區域網IP,可以訪問外網

2 配置目標伺服器

2.1 安裝autossh服務

sudo apt install -y autossh

autossh命令引數解釋如下:

  • -f 後臺執行
  • -C 允許壓縮資料
  • -N 不執行任何命令
  • -R 將埠繫結到遠端伺服器,反向代理
  • -L 將埠繫結到本地客戶端,正向代理
  • -p 轉發伺服器B的SSH登入埠號,預設為22

結合:

  • ssh -fCNR 反向代理
  • ssh -fCNL 正向代理

2.2 命令列配置連線中轉伺服器--臨時有效

建立目標伺服器到中轉伺服器的反向代理,具體指令為

autossh -M 中轉伺服器埠 -fCNR [中轉伺服器IP]:中轉伺服器埠:目標伺服器IP:目標伺服器埠 中轉伺服器使用者名稱@IP

例如:

autossh -M 5000 -o "ServerAliveInterval 30" -CNR 6000:localhost:22 [email protected]
  • 說明:埠可以自定義,
  • 第一次連線時不加-f後臺執行,需要測試;
  • -M 5000:中轉伺服器用來接收目標伺服器的資訊,如果隧道不正常而返回給目標伺服器讓他實現重新連線,相當於會話保持;
  • -o "ServerAliveInterval 30":保持會話時間間隔,autossh中應該可以省略;
  • -CNR 6000:6000為中轉伺服器的反向代理埠;
  • localhost:22:目標Linux伺服器的ssh埠,預設22。

3 配置中轉伺服器

3.1 測試連線目標伺服器

ssh [email protected] -p 6000

如果可以執行表示成功!

3.2 建立中轉伺服器的正向代理

建立中轉伺服器的正向代理,用來做轉發,具體指令為

ssh -fCNL [目標Linux伺服器IP]:目標Linux伺服器埠:中轉伺服器IP:中轉伺服器埠 中轉伺服器使用者名稱@中轉伺服器IP

例:

ssh -fCNL "*:3000:localhost:6000" [email protected]

輸入目標伺服器的密碼

3.3 客戶端

直接配置Xshell

IP:8.8.8.8

埠:3000

使用者名稱:$user3

密碼:XXXXXXX

或者任意伺服器登陸;

ssh -p 3000 [email protected]

輸入目標伺服器的密碼

4 配置自啟動

4.1 適用於CentOS6 和 CentOS7

輸入

vim /etc/rc.d/rc.local

追加如下內容

autossh -M 5000 -o "ServerAliveInterval 30" -o "ServerAliveCountMax 5" -fCNR 6000:localhost:22 [email protected]

ServerAliveInterval:保持活力時間
ServerAliveCountMax:允許的最大會話數

授予執行許可權

chmod +x /etc/rc.d/rc.local

4.2 適用於system管理的服務,如:CentOS 7 / Ubuntu 16 / Ubuntu 18

4.2.1 編寫autossh自啟動指令碼

vim /lib/systemd/system/autossh.service

新增如下內容

[Unit]
Description=AutoSSH service
After=network.target
[Service]
Type=forking
ExecStart=/etc/autossh.local
[Install]
WantedBy=multi-user.target
Alias=autossh.service

4.2.2 編輯呼叫的普通指令碼

vim /etc/autossh.local

新增如下內容

#!/bin/bash -e
sudo -u $user3 autossh -M 5000 -o "ServerAliveInterval 30" -o "ServerAliveCountMax 5" -fCNR 6000:localhost:22 [email protected]_ip &

4.2.3 設定開機自啟動

sudo systemctl enable autossh # 加入自啟動
sudo systemctl start autossh # 啟動服務
sudo systemctl status autossh # 檢視服務狀態

參考

https://www.cnblogs.com/kwongtai/p/6903420.html