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