【摘要】 反向 SSH 是一種可用于從外部世界訪問系統(tǒng)(位于防火墻后面)的技術(shù)
反向 SSH 是一種可用于從外部世界訪問系統(tǒng)(位于防火墻后面)的技術(shù)。
如您所知,SSH 是一種支持網(wǎng)絡(luò)節(jié)點(diǎn)之間加密通信的網(wǎng)絡(luò)協(xié)議。使用此協(xié)議,您可以進(jìn)行安全的遠(yuǎn)程登錄、從/到遠(yuǎn)程機(jī)器的安全復(fù)制等。
您通常會執(zhí)行以下操作以使用ssh 命令安全地連接到遠(yuǎn)程服務(wù)器。
$ ssh [your-account-login]@[server-ip]
什么是反向 SSH?
SSH 是一個非常好的安全訪問遠(yuǎn)程機(jī)器或服務(wù)器的工具。但是,當(dāng)您嘗試連接到防火墻后面的遠(yuǎn)程服務(wù)器并且此防火墻拒絕任何傳入連接或沒有先前傳出請求的數(shù)據(jù)傳輸請求時,就會出現(xiàn)問題。這意味著只允許那些由遠(yuǎn)程服務(wù)器機(jī)器發(fā)起的連接。對于那些想要遠(yuǎn)程訪問此服務(wù)器機(jī)器的人來說,這是一個真正的問題。
反向 SSH 提供了一種技術(shù),您可以通過該技術(shù)模擬到此遠(yuǎn)程服務(wù)器計算機(jī)的正常 SSH。
主要問題是防火墻拒絕您的機(jī)器嘗試與遠(yuǎn)程服務(wù)器機(jī)器建立的 ssh 連接。但是您知道,同一防火墻不會對源自服務(wù)器計算機(jī)的連接有任何問題。所以,為什么不請坐在防火墻后面的人做一些事情,以實現(xiàn)遠(yuǎn)程訪問服務(wù)器的目標(biāo)。為此,我們必須使用 ssh -R 選項。
這是手冊頁中 ssh -R 選項的描述:
-R [bind_address:]porthostport
指定將遠(yuǎn)程(服務(wù)器)主機(jī)上的給定端口轉(zhuǎn)發(fā)到本地端的給定主機(jī)和端口。這是通過分配一個套接字來偵聽遠(yuǎn)程端的端口來實現(xiàn)的,并且每當(dāng)與此端口建立連接時,都會通過安全通道轉(zhuǎn)發(fā)連接,并從本地計算機(jī)建立與主機(jī)端口 hostport 的連接。
因此,您可以使用帶有 -R 選項的 ssh 命令(在我們的例子中來自服務(wù)器)連接到您的機(jī)器,在那里分配一個端口,并確保該端口上的任何連接請求都轉(zhuǎn)發(fā)到遠(yuǎn)程服務(wù)器的 ssh 端口。
服務(wù)器機(jī)器執(zhí)行 ssh 并通過端口轉(zhuǎn)發(fā)確保您可以 ssh 返回服務(wù)器機(jī)器,而不是您的機(jī)器執(zhí)行 ssh。
如何創(chuàng)建反向 SSH 隧道?
這是您坐在遠(yuǎn)程服務(wù)器端的朋友應(yīng)該在服務(wù)器上運(yùn)行的命令:
ssh -fN -R 7000:localhost:22 username@yourMachine-ipaddress
因此,從遠(yuǎn)程服務(wù)器到您的機(jī)器的這個 ssh 連接請求將確保您機(jī)器上端口 7000 的任何 ssh 連接請求都轉(zhuǎn)發(fā)到遠(yuǎn)程服務(wù)器的端口 22。
現(xiàn)在在端口 7000 上從您的機(jī)器向您自己的機(jī)器發(fā)出 ssh 連接請求:
ssh username@localhost -p 7000
在這里,盡管您似乎在 localhost 上執(zhí)行 ssh,但您的請求將被轉(zhuǎn)發(fā)到遠(yuǎn)程主機(jī)。因此,您應(yīng)該在遠(yuǎn)程服務(wù)器上使用您的帳戶“用戶名”,并在提示輸入密碼時輸入相應(yīng)的密碼。
這應(yīng)該清楚與反向 ssh 技術(shù)相關(guān)的大部分方面。但是,有一個問題。問題是你必須先請你的一個朋友——他坐在防火墻后面——來創(chuàng)建一個 ssh 連接。這不是每次都可行的。
為了克服這個問題,您可以做的是設(shè)置一臺不受防火墻限制的機(jī)器(就像您的機(jī)器一樣),使其始終處于開啟狀態(tài)。讓我們將此機(jī)器稱為 machine_z。
machine_z 的好處是,您可以一次在其上設(shè)置反向 ssh,然后將其保留為這樣。在任何時候,當(dāng)您需要登錄遠(yuǎn)程機(jī)器時,您可以在指定端口上 ssh 進(jìn)入 machine_z(如前所示),您的連接請求將被轉(zhuǎn)發(fā)到遠(yuǎn)程服務(wù)器機(jī)器,瞧,您將在遠(yuǎn)程運(yùn)行命令服務(wù)器。
在相關(guān)說明中,您還可以設(shè)置無密碼 SSH以在不輸入密碼的情況下連接到另一臺服務(wù)器。
您需要在 machine_z 上配置的一些設(shè)置包括:
確保將參數(shù) TCPKeepAlive、ClientAliveInterval、ClientAliveCountMax 和 GatewayPorts 設(shè)置為適當(dāng)?shù)闹怠_@些參數(shù)位于 /etc/sshd_config 或/etc/ssh/sshd_config文件中
如果您對上述參數(shù)進(jìn)行了一些更改,您應(yīng)該重新啟動 sshd 守護(hù)程序以反映更改。
此外,請確保使用nohup 命令運(yùn)行第一個 ssh 命令(從遠(yuǎn)程服務(wù)器執(zhí)行到 machine_z) ,以便此 ssh 會話不受用戶注銷時可能發(fā)生的掛起的影響。
鏈接:https://bbs.huaweicloud.com/blogs/371112
-
Linux
+關(guān)注
關(guān)注
87文章
11292瀏覽量
209326 -
服務(wù)器
+關(guān)注
關(guān)注
12文章
9123瀏覽量
85324 -
命令
+關(guān)注
關(guān)注
5文章
683瀏覽量
22011 -
SSH
+關(guān)注
關(guān)注
0文章
188瀏覽量
16335
原文標(biāo)題:如何在 Linux 上設(shè)置反向 SSH
文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論