使用ssh工具訪問Linux服務(wù)器的基本方法
第一步,開啟工作站上防火墻的相應(yīng)端口,SSH是22。
第二步,開啟SSH服務(wù)。
先查看ssh的狀態(tài)。
第三步,修改配置文件,/etc/ssh/sshd_config
打開這個文件,在最后的地方AllowUsers,添加用戶名,多個就用空格隔開,當(dāng)然也可以添加root。如果想禁用root 登錄也可以,這里不添加。同時可以在這個文件中找到一個語句: Permitrootlogin yes。將yes改為no就可以了。
第四步,設(shè)置ssh隨機(jī)啟動
第五步,遠(yuǎn)程登錄
通過反向 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ù)器。
在 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 連接。
“-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è)置了反向隧道。
通過反向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 并添加下面的行。
基于 Debian 的系統(tǒng):
現(xiàn)在在任何其它計算機(jī)(客戶端計算機(jī)),輸入以下命令訪問網(wǎng)絡(luò)地址變換之后的家庭服務(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 隧道。
“-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。
新聞熱點
疑難解答
圖片精選