① 使用ssh訪問防火牆後的Linux伺服器的方法
使用ssh工具訪問Linux伺服器的基本方法
第一步,開啟工作站上防火牆的相應埠,SSH是22。
第二步,開啟SSH服務。
先查看ssh的狀態。
第三步,修改配置文件,/etc/ssh/sshd_config
打開這個文件,在最後的地方AllowUsers,添加用戶名,多個就用空格隔開,當然也可以添加root。如果想禁用root 登錄也可以,這里不添加。同時可以在這個文件中找到一個語句: Permitrootlogin yes。將yes改為no就可以了。
第四步,設置ssh隨機啟動
第五步,遠程登錄
通過反向 SSH 隧道訪問 NAT 後面的 Linux 伺服器
什麼是反向 SSH 隧道?
SSH 埠轉發的一種替代方案是 反向 SSH 隧道。反向 SSH 隧道的概念非常簡單。使用這種方案,在你的受限的家庭網路之外你需要另一台主機(所謂的「中繼主機」),你能從當前所在地通過 SSH 登錄到它。你可以用有公網 IP 地址的 VPS 實例 配置一個中繼主機。然後要做的就是從你的家庭網路伺服器中建立一個到公網中繼主機的永久 SSH 隧道。有了這個隧道,你就可以從中繼主機中連接「回」家庭伺服器(這就是為什麼稱之為 「反向」 隧道)。不管你在哪裡、你的家庭網路中的 NAT 或 防火牆限制多麼嚴格,只要你可以訪問中繼主機,你就可以連接到家庭伺服器。
在 Linux 上設置反向 SSH 隧道
讓我們來看看怎樣創建和使用反向 SSH 隧道。我們做如下假設:我們會設置一個從家庭伺服器(homeserver)到中繼伺服器(relayserver)的反向 SSH 隧道,然後我們可以通過中繼伺服器從客戶端計算機(clientcomputer) SSH 登錄到家庭伺服器。本例中的中繼伺服器 的公網 IP 地址是 1.1.1.1。
在家庭伺服器上,按照以下方式打開一個到中繼伺服器的 SSH 連接。
復制代碼代碼如下:homeserver~$ ssh -fN -R 10022:localhost:22 [email protected]「-R 10022:localhost:22」 選項定義了一個反向隧道。它轉發中繼伺服器 10022 埠的流量到家庭伺服器的 22 號埠。
用 「-fN」 選項,當你成功通過 SSH 伺服器驗證時 SSH 會進入後台運行。當你不想在遠程 SSH 伺服器執行任何命令,就像我們的例子中只想轉發埠的時候非常有用。
運行上面的命令之後,你就會回到家庭主機的命令行提示框中。
登錄到中繼伺服器,確認其 127.0.0.1:10022 綁定到了 sshd。如果是的話就表示已經正確設置了反向隧道。
復制代碼代碼如下:relayserver~$ sudo netstat -nap | grep 10022通過反向SSH 隧道直接連接到網路地址變換後的伺服器
上面的方法允許你訪問 NAT 後面的 家庭伺服器,但你需要登錄兩次:首先登錄到 中繼伺服器,然後再登錄到家庭伺服器。這是因為中繼伺服器上 SSH 隧道的端點綁定到了回環地址(127.0.0.1)。
事實上,有一種方法可以只需要登錄到中繼伺服器就能直接訪問NAT之後的家庭伺服器。要做到這點,你需要讓中繼伺服器上的 sshd 不僅轉發回環地址上的埠,還要轉發外部主機的埠。這通過指定中繼伺服器上運行的 sshd 的 GatewayPorts 實現。
打開中繼伺服器的 /etc/ssh/sshd_conf 並添加下面的行。
基於 Debian 的系統:
復制代碼代碼如下:relayserver~$ sudo /etc/init.d/ssh restart現在在任何其它計算機(客戶端計算機),輸入以下命令訪問網路地址變換之後的家庭伺服器。
在 Linux 上設置一個永久反向 SSH 隧道
現在你已經明白了怎樣創建一個反向 SSH 隧道,然後把隧道設置為 「永久」,這樣隧道啟動後就會一直運行(不管臨時的網路擁塞、SSH 超時、中繼主機重啟,等等)。畢竟,如果隧道不是一直有效,你就不能可靠的登錄到你的家庭伺服器。
對於永久隧道,我打算使用一個叫 autossh 的工具。正如名字暗示的,這個程序可以讓你的 SSH 會話無論因為什麼原因中斷都會自動重連。因此對於保持一個反向 SSH 隧道非常有用。
第一步,我們要設置從家庭伺服器到中繼伺服器的無密碼 SSH 登錄。這樣的話,autossh 可以不需要用戶干預就能重啟一個損壞的反向 SSH 隧道。
下一步,在建立隧道的家庭伺服器上安裝 autossh。
在家庭伺服器上,用下面的參數運行 autossh 來創建一個連接到中繼伺服器的永久 SSH 隧道。
「-fN」 選項傳遞給 ssh 命令,讓 SSH 隧道在後台運行。
「-o XXXX」 選項讓 ssh:
使用密鑰驗證,而不是密碼驗證。
自動接受(未知)SSH 主機密鑰。
每 60 秒交換 keep-alive 消息。
沒有收到任何響應時最多發送 3 條 keep-alive 消息。
其餘 SSH 隧道相關的選項和之前介紹的一樣。
如果你想系統啟動時自動運行 SSH 隧道,你可以將上面的 autossh 命令添加到 /etc/rc.local。
② 如何區分GPU伺服器和普通伺服器
GPU伺服器是基於GPU的應用視頻編解碼、深度學習、海量運算等多種場景的快速、穩定的計算服務。GPU加速計算可以提供非凡的應用程序性能,能將應用程序計算密集部分的工作負載到GPU,同時仍由CPU運行其餘程序代碼。普通伺服器在這些方面的應用上可能會稍微差點。其實你也可以去網上對比看看,去官網找幾個具體的型號做一下對比。思騰合力在業界的口碑還是不錯的,擁有覆蓋全場景的需求的GPU伺服器產品線,擁有自主品牌GPU伺服器以及通用X86伺服器,還是挺不錯的。
③ 通過 X11 在你的 Windows 上顯示 Linux 伺服器里的 GUI 程序
平時進行實驗操作時,通過 VSCode 遠程連接伺服器,所有代碼、環境、運行環境都在伺服器上。然而,有時需要使用 GUI 程序,比如使用 Matplotlib 或 OpenCV 進行中間過程繪圖。盡管可以尋找替代方案,但最理想的解決方法是在個人電腦上直接顯示伺服器上的 GUI 程序。
若採用 Scoop,MobaXterm 可以直接在電腦上彈出窗口顯示結果。這是因為 X11 是 Linux 系統上的一種採用 Client-Server 架構的圖形界面協議。通常,伺服器上的客戶端與 Windows 上的伺服器端結合使用。以實現 GUI 程序在 Windows 系統上的顯示。
想像您作為 X11 開發人員,需要實現的功能是:客戶端顯示需要顯示的區域,實際運行 GUI 程序的區域安裝客戶端。SSH 作為埠轉發工具,即 X11Forwarding 的用途。Linux 系統中的桌面環境(如 GNOME、KDE)通常在本地安裝客戶端和伺服器端,滿足顯示需求。
Windows 系統上,使用了如 Xming X Server for Windows 和 VcXsrv Windows X Server 等工具,但通常需要手動配置。相比之下,MobaXterm 自帶的 X11 伺服器能自動配置,方便使用。
通過 X11 在 Windows 系統上運行 Linux 伺服器上的 GUI 程序,看起來似乎可行。然而,這種方式可能不如使用 VSCode 的遠程開發功能體驗佳。JetBrains 的 Gateway 實際上就是通過類似方法運作,盡管其當前體驗可能仍遜於 VSCode。
參考資料:Difference between Xorg and Gnome/KDE/Xfce