溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

如何使用ssh訪問防火墻后的Linux服務(wù)器

發(fā)布時間:2021-08-04 21:04:42 來源:億速云 閱讀:154 作者:chen 欄目:系統(tǒng)運維

本篇內(nèi)容介紹了“如何使用ssh訪問防火墻后的Linux服務(wù)器”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

使用ssh工具訪問Linux服務(wù)器的基本方法

第一步,開啟工作站上防火墻的相應(yīng)端口,SSH是22。

第二步,開啟SSH服務(wù)。
先查看ssh的狀態(tài)。

代碼如下:

service sshd status


開啟服務(wù),

代碼如下:

service sshd start


當(dāng)然也可以關(guān)閉了,

代碼如下:

service sshd stop


重啟服務(wù),

代碼如下:

sshd restart

第三步,修改配置文件,/etc/ssh/sshd_config
打開這個文件,在最后的地方AllowUsers,添加用戶名,多個就用空格隔開,當(dāng)然也可以添加root。如果想禁用root 登錄也可以,這里不添加。同時可以在這個文件中找到一個語句: Permitrootlogin yes。將yes改為no就可以了。

第四步,設(shè)置ssh隨機(jī)啟動

代碼如下:

chkconfig --level xxxx sshd on   //xxxx表示你要的等級(應(yīng)該這么說吧),例如2345等

第五步,遠(yuǎn)程登錄
 

代碼如下:

ssh usrname@hostname      //hostname或者Ip


然后就是要你輸入密碼了。登錄后,也可以更改用戶(su 命令)。如何希望有圖形,也不是不可以,在登錄的時候加上 -X (大寫的X):ssh -X usrname@hostname。
這樣勉強可以吧,也有圖形界面了,就是反映比較慢,應(yīng)急可以。

通過反向 SSH 隧道訪問 NAT 后面的 Linux 服務(wù)器

什么是反向 SSH 隧道?
SSH 端口轉(zhuǎn)發(fā)的一種替代方案是 反向 SSH 隧道。反向 SSH 隧道的概念非常簡單。使用這種方案,在你的受限的家庭網(wǎng)絡(luò)之外你需要另一臺主機(jī)(所謂的“中繼主機(jī)”),你能從當(dāng)前所在地通過 SSH 登錄到它。你可以用有公網(wǎng) IP 地址的 VPS 實例 配置一個中繼主機(jī)。然后要做的就是從你的家庭網(wǎng)絡(luò)服務(wù)器中建立一個到公網(wǎng)中繼主機(jī)的永久 SSH 隧道。有了這個隧道,你就可以從中繼主機(jī)中連接“回”家庭服務(wù)器(這就是為什么稱之為 “反向” 隧道)。不管你在哪里、你的家庭網(wǎng)絡(luò)中的 NAT 或 防火墻限制多么嚴(yán)格,只要你可以訪問中繼主機(jī),你就可以連接到家庭服務(wù)器。
如何使用ssh訪問防火墻后的Linux服務(wù)器
在 Linux 上設(shè)置反向 SSH 隧道
讓我們來看看怎樣創(chuàng)建和使用反向 SSH 隧道。我們做如下假設(shè):我們會設(shè)置一個從家庭服務(wù)器(homeserver)到中繼服務(wù)器(relayserver)的反向 SSH 隧道,然后我們可以通過中繼服務(wù)器從客戶端計算機(jī)(clientcomputer) SSH 登錄到家庭服務(wù)器。本例中的中繼服務(wù)器 的公網(wǎng) IP 地址是 1.1.1.1。

在家庭服務(wù)器上,按照以下方式打開一個到中繼服務(wù)器的 SSH 連接。

代碼如下:

homeserver~$ ssh -fN -R 10022:localhost:22 relayserver_user@1.1.1.1


這里端口 10022 是任何你可以使用的端口數(shù)字。只需要確保中繼服務(wù)器上不會有其它程序使用這個端口。

“-R 10022:localhost:22” 選項定義了一個反向隧道。它轉(zhuǎn)發(fā)中繼服務(wù)器 10022 端口的流量到家庭服務(wù)器的 22 號端口。

用 “-fN” 選項,當(dāng)你成功通過 SSH 服務(wù)器驗證時 SSH 會進(jìn)入后臺運行。當(dāng)你不想在遠(yuǎn)程 SSH 服務(wù)器執(zhí)行任何命令,就像我們的例子中只想轉(zhuǎn)發(fā)端口的時候非常有用。

運行上面的命令之后,你就會回到家庭主機(jī)的命令行提示框中。

登錄到中繼服務(wù)器,確認(rèn)其 127.0.0.1:10022 綁定到了 sshd。如果是的話就表示已經(jīng)正確設(shè)置了反向隧道。

代碼如下:

relayserver~$ sudo netstat -nap | grep 10022

代碼如下:

tcp      0    0 127.0.0.1:10022          0.0.0.0:*               LISTEN     8493/sshd

    
現(xiàn)在就可以從任何其它計算機(jī)(客戶端計算機(jī))登錄到中繼服務(wù)器,然后按照下面的方法訪問家庭服務(wù)器。

 

代碼如下:

relayserver~$ ssh -p 10022 homeserver_user@localhost


需要注意的一點是你在上面為localhost輸入的 SSH 登錄/密碼應(yīng)該是家庭服務(wù)器的,而不是中繼服務(wù)器的,因為你是通過隧道的本地端點登錄到家庭服務(wù)器,因此不要錯誤輸入中繼服務(wù)器的登錄/密碼。成功登錄后,你就在家庭服務(wù)器上了。

通過反向SSH 隧道直接連接到網(wǎng)絡(luò)地址變換后的服務(wù)器
上面的方法允許你訪問 NAT 后面的 家庭服務(wù)器,但你需要登錄兩次:首先登錄到 中繼服務(wù)器,然后再登錄到家庭服務(wù)器。這是因為中繼服務(wù)器上 SSH 隧道的端點綁定到了回環(huán)地址(127.0.0.1)。

事實上,有一種方法可以只需要登錄到中繼服務(wù)器就能直接訪問NAT之后的家庭服務(wù)器。要做到這點,你需要讓中繼服務(wù)器上的 sshd 不僅轉(zhuǎn)發(fā)回環(huán)地址上的端口,還要轉(zhuǎn)發(fā)外部主機(jī)的端口。這通過指定中繼服務(wù)器上運行的 sshd 的 GatewayPorts 實現(xiàn)。

打開中繼服務(wù)器的 /etc/ssh/sshd_conf 并添加下面的行。

代碼如下:


relayserver~$ vi /etc/ssh/sshd_conf
GatewayPorts clientspecified


重啟 sshd。

基于 Debian 的系統(tǒng):

代碼如下:

relayserver~$ sudo /etc/init.d/ssh restart


基于紅帽的系統(tǒng):

代碼如下:

relayserver~$ sudo systemctl restart sshd


現(xiàn)在在家庭服務(wù)器中按照下面方式初始化一個反向 SSH 隧道。

代碼如下:

homeserver~$ ssh -fN -R 1.1.1.1:10022:localhost:22 relayserver_user@1.1.1.1


登錄到中繼服務(wù)器然后用 netstat 命令確認(rèn)成功建立的一個反向 SSH 隧道。

 

代碼如下:

relayserver~$ sudo netstat -nap | grep 10022

代碼如下:

tcp      0      0 1.1.1.1:10022     0.0.0.0:*           LISTEN      1538/sshd: dev


不像之前的情況,現(xiàn)在隧道的端點是 1.1.1.1:10022(中繼服務(wù)器的公網(wǎng) IP 地址),而不是 127.0.0.1:10022。這就意味著從外部主機(jī)可以訪問隧道的另一端。

現(xiàn)在在任何其它計算機(jī)(客戶端計算機(jī)),輸入以下命令訪問網(wǎng)絡(luò)地址變換之后的家庭服務(wù)器。

代碼如下:


clientcomputer~$ ssh -p 10022 homeserver_user@1.1.1.1


在上面的命令中,1.1.1.1 是中繼服務(wù)器的公共 IP 地址,homeserver_user必須是家庭服務(wù)器上的用戶賬戶。這是因為你真正登錄到的主機(jī)是家庭服務(wù)器,而不是中繼服務(wù)器。后者只是中繼你的 SSH 流量到家庭服務(wù)器。

在 Linux 上設(shè)置一個永久反向 SSH 隧道
現(xiàn)在你已經(jīng)明白了怎樣創(chuàng)建一個反向 SSH 隧道,然后把隧道設(shè)置為 “永久”,這樣隧道啟動后就會一直運行(不管臨時的網(wǎng)絡(luò)擁塞、SSH 超時、中繼主機(jī)重啟,等等)。畢竟,如果隧道不是一直有效,你就不能可靠的登錄到你的家庭服務(wù)器。

對于永久隧道,我打算使用一個叫 autossh 的工具。正如名字暗示的,這個程序可以讓你的 SSH 會話無論因為什么原因中斷都會自動重連。因此對于保持一個反向 SSH 隧道非常有用。

第一步,我們要設(shè)置從家庭服務(wù)器到中繼服務(wù)器的無密碼 SSH 登錄。這樣的話,autossh 可以不需要用戶干預(yù)就能重啟一個損壞的反向 SSH 隧道。

下一步,在建立隧道的家庭服務(wù)器上安裝 autossh。

在家庭服務(wù)器上,用下面的參數(shù)運行 autossh 來創(chuàng)建一個連接到中繼服務(wù)器的永久 SSH 隧道。

代碼如下:


homeserver~$ autossh -M 10900 -fN -o "PubkeyAuthentication=yes" -o "StrictHostKeyChecking=false" -o "PasswordAuthentication=no" -o "ServerAliveInterval 60" -o "ServerAliveCountMax 3" -R 1.1.1.1:10022:localhost:22 relayserver_user@1.1.1.1


“-M 10900” 選項指定中繼服務(wù)器上的監(jiān)視端口,用于交換監(jiān)視 SSH 會話的測試數(shù)據(jù)。中繼服務(wù)器上的其它程序不能使用這個端口。

“-fN” 選項傳遞給 ssh 命令,讓 SSH 隧道在后臺運行。

“-o XXXX” 選項讓 ssh:

使用密鑰驗證,而不是密碼驗證。
自動接受(未知)SSH 主機(jī)密鑰。
每 60 秒交換 keep-alive 消息。
沒有收到任何響應(yīng)時最多發(fā)送 3 條 keep-alive 消息。
其余 SSH 隧道相關(guān)的選項和之前介紹的一樣。

如果你想系統(tǒng)啟動時自動運行 SSH 隧道,你可以將上面的 autossh 命令添加到 /etc/rc.local。

“如何使用ssh訪問防火墻后的Linux服務(wù)器”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI