內網主機從外面鏈接不了?SSH反向隧道來幫你!

如今咱們有一臺內網主機 A,在局域網內是能夠訪問的,可是若是咱們如今不處在局域網內,能夠選擇 *** 鏈接,但這樣其實並不太方便,因此本節咱們來講明一下利用 SSH 反向隧道來實現訪問內網主機的方法。
shell

準備

首先咱們須要有一臺公網主機做爲跳板,這臺主機是能夠公網訪問的,咱們將其命名爲 B,它的 IP 假設爲 10.10.10.10。網絡

因此兩臺機器網絡配置以下:app

A 內網機器

  • IP:192.168.1.2ssh

  • SSH端口: 22ide

  • 用戶名:usera測試

  • 密碼:passwordaspa

  • 內網配置端口:22(即配置 SSH 端口的反向隧道)rest

B 公網機器

  • IP:10.10.10.10orm

  • SSH端口: 22ci

  • 用戶名:userb

  • 密碼:passwordb

  • 公網端口:22001(即用 B 的 22001 端口連到 A 的 SSH 22 端口)

配置SSH祕鑰

首先咱們須要在 A 主機上生成 SSH 祕鑰,和 B 用 SSH 創建認證。

首先在主機 A 上執行以下命令生成 SSH 祕鑰:

ssh-keygen -t rsa -C "your@email.com"

命令裏面的郵箱須要自行更換。

而後利用以下命令將 A 的 SSH 祕鑰添加到 B 的 authorized_keys 裏面:

ssh-copy-id userb@10.10.10.10

執行後會提示輸入主機 B 的密碼,執行完畢以後,咱們登陸到 B,就發現 authorized_keys 裏面就多了 A 的 SSH 公鑰了,成功創建 SSH 認證。

B 主機配置

B 主機須要更改 /etc/ssh/sshd_config 文件,修改以下一行:

GatewayPorts yes

這樣能夠把監聽的端口綁定到任意IP 0.0.0.0上,不然只有本機 127.0.0.1 能夠訪問。

而後重啓 sshd 服務:

sudo service sshd restart

A 主機配置

主機 A 再安裝一個 AutoSSH,以 Ubuntu 爲例,命令以下:

sudo apt-get install autossh

而後執行以下命令便可完成反向 SSH 配置:

autossh -M 55555 -NfR 0.0.0.0:22001:localhost:22 userb@10.10.10.10

這裏 -M 後面任意填寫一個可用端口便可,-N 表明只創建鏈接,不打開shell ,-f 表明創建成功後在後臺運行,-R 表明指定端口映射。

這裏是將 A 主機的 22 端口映射到 B 主機的 22001 端口,這樣就完成了配置。

主要咱們再訪問 B 主機的 22001 端口,就會自動轉發到 A 主機的 22 端口了,便可以公網訪問了。

鏈接測試

接下來 SSH 測試鏈接 A 主機便可:

ssh usera@10.10.10.10 -p 22001

輸入密碼,完成鏈接。

相關文章
相關標籤/搜索