ssh 反向隧道相信大多數(shù)同學(xué)都比較了解,就算不了解也一定在日常工作中聽說過,其實(shí)拋開那些專業(yè)的術(shù)語,通常我們借助 ssh 的反向隧道來實(shí)現(xiàn)兩個網(wǎng)絡(luò)隔離的主機(jī)間通信。最近小白在遠(yuǎn)程操作一個私有化的項(xiàng)目時正好用到了這個,簡單總結(jié)了下便有了此文章。
在操作之前,我先將需要的資源列出一個表格,大家在操作前可以先按照如下準(zhǔn)備資源:
代號 | 角色 | 機(jī)器位置 | 地址 | 賬戶 | ssh 端口 | sshd |
---|---|---|---|---|---|---|
A | 中轉(zhuǎn)機(jī)器 | 公網(wǎng) | 121.41.218.68 | root | 22 | 啟用 |
B | 客戶機(jī)器 | 客戶內(nèi)網(wǎng) | 10.155.0.0/24 | root | 22 | 啟用 |
C | 我的機(jī)器 | 公司/家中 | 127.0.0.1 | root | 22 | 不需要 |
這里為了操作方便機(jī)器全部用的 root 賬號,大家不要學(xué)我
我的需求很簡單,即客戶內(nèi)網(wǎng) B 中有一批剛裝完操作系統(tǒng)的服務(wù)器,我需要在公司或者家中的電腦上通過 Ansible Playbook 批量對這些機(jī)器進(jìn)行初始化。
第一步:開啟 ssh server 代理功能
在位于公網(wǎng)服務(wù)器上打開 sshd 的GatewayPorts開關(guān),并重啟sshd
sed-i"s/#GatewayPortsno/GatewayPortsyes/g"/etc/ssh/sshd_config systemctlrestartssh
打開代理功能意味著,當(dāng)我們在建立 ssh 反向隧道后,監(jiān)聽的地址會從默認(rèn)的 127.0.0.1更換成 0.0.0.0,方便 ssh 客戶端遠(yuǎn)程登錄。
第二步:建立 ssh 反向隧道
在客戶內(nèi)網(wǎng)B中找一臺能訪問 121.41.218.68 地址的服務(wù)器,登錄上去,并在終端內(nèi)執(zhí)行下述命令:
ssh-lroot-p22-qngfNTR882222121.41.218.68-oServerAliveInterval=10
這一步的關(guān)鍵信息其實(shí)就是在主機(jī) B 和主機(jī) A 之間建立一條 SSH 隧道,隧道端口的映射關(guān)系是主機(jī)B:22 <--> 主機(jī)A:8822
之所以加上 ServerAliveInterval=10,是讓客戶端每 10s 發(fā)送一個心跳保持隧道的鏈接,否則這條連接很容易被重置。
第三步:本地 ssh client 代理
目前有了 ssh 的隧道也只能滿足我本地主機(jī) C 能通過 121.41.218.68 的 8822 端口 ssh登錄到客戶內(nèi)網(wǎng)的 B 主機(jī),還不能滿足我進(jìn)行批量運(yùn)行任務(wù)的需求。
此時,我們就需要在自己電腦上配置 ssh 客戶端的 socket 代理來滿足需求,配置位于~/.ssh/config
hosthosta HostName121.41.218.68 Port8822 Userroot host10.155.0.* Userroot Port22 ProxyCommandsshhosta-W%h:%p
至此,我就可以在本地用 ansible-playbook 無縫的進(jìn)行操作了。
總結(jié)
上述 3 步是整個 ssh 內(nèi)網(wǎng)穿透的核心流程,如果要做得更加的優(yōu)雅的話,我們還需要考慮幾點(diǎn)優(yōu)化:
為三臺機(jī)器上的 ssh 客戶端分別配置公私鑰
為主機(jī) B 上的 ssh 方向隧道創(chuàng)建服務(wù)進(jìn)程,避免重啟后隧道丟失
盡量保證公網(wǎng)主機(jī) A 的網(wǎng)絡(luò)安全,可單獨(dú)為隧道端口配置防火墻策略
當(dāng)然,ssh 反向隧道除了能代理 ssh 服務(wù)外,它也能對內(nèi)網(wǎng)的其他服務(wù)做 socket 轉(zhuǎn)發(fā),這里本文就不再展開。總之,建立 SSH 反向隧道這種事情大多數(shù)情況都是迫于無奈的臨時選擇,我們在用完后要及時釋放連接,避免長期閑置被不法分子盯上后帶來的損失。
審核編輯:湯梓紅
-
服務(wù)器
+關(guān)注
關(guān)注
12文章
8958瀏覽量
85081 -
操作系統(tǒng)
+關(guān)注
關(guān)注
37文章
6684瀏覽量
123140 -
SSH
+關(guān)注
關(guān)注
0文章
184瀏覽量
16283
原文標(biāo)題:三條命令助你快速實(shí)現(xiàn) SSH 內(nèi)網(wǎng)穿透
文章出處:【微信號:良許Linux,微信公眾號:良許Linux】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論