1. 程式人生 > >使用MobaXterm開啟centos的遠端桌面(個人筆記)

使用MobaXterm開啟centos的遠端桌面(個人筆記)

一、原理X Window System 常被簡稱為X11或X,其功能包括視窗的繪製、移動,以及與滑鼠、鍵盤等輸入裝置的互動。相信很多新手都知道startx這個命令,沒有X11的話就只能對著黑乎乎的螢幕敲命令了。
它採用C/S模型:一個X server 和多個應用程式(client)通訊。server接收client的請求繪製視窗,並將來自滑鼠、鍵盤等裝置的輸入傳遞給client。
X server和client可以位於同一計算機上,就類似於平時使用的Windows作業系統;當X server和client不在同一計算機時,使用本地的X server 進行繪製、互動,就變成了遠端桌面。
舉個例子:前者是你在披薩店點了一份披薩,店員在你旁邊幫你做好拿給你(這家店相當於同一臺計算機);後者是你在網上叫了一份披薩,店員接單後到你家幫你做了一份披薩(注意:VNC是使用店裡廚房,做好給你送過來;X轉發是使用你家廚房做披薩)

不理解也沒關係,會用能達到目的就好了。
常用X Server有免費的Xming、收費的Xmanager(非常棒的Xshell終端軟體也是他家出的,家庭教育使用者免費使用) 等;上述需要手動配置,然而有了MobaXterm,一切都變得超級簡單!

1. X 協議

Linux 本身是沒有圖形化介面的,所謂的圖形化介面系統只不過中 Linux 下的應用程式。這一點和 Windows 不一樣。Windows 從 Windows 95 開始,圖形介面就直接在系統核心中實現了,是作業系統不可或缺的一部分。Linux 的圖形化介面,底層都是基於 X 協議。

X 協議由 X server 和 X client 組成:

  • X server 管理主機上與顯示相關的硬體設定(如顯示卡、硬碟、滑鼠等),它負責螢幕畫面的繪製與顯示,以及將輸入設定(如鍵盤、滑鼠)的動作告知 X client。
  • X client (即 X 應用程式) 則主要負責事件的處理(即程式的邏輯)。

舉個例子,如果使用者點選了滑鼠左鍵,因為滑鼠歸 X server 管理,於是 X server 就捕捉到了滑鼠點選這個動作,然後它將這個動作告訴 X client,因為 X client 負責程式邏輯,於是 X client 就根據程式預先設定的邏輯(例如畫一個圓),告訴 X server 說:“請在滑鼠點選的位置,畫一個圓”。最後,X server 就響應 X client 的請求,在滑鼠點選的位置,繪製並顯示出一個圓。

2. X11 Forwarding

這麼繞,有啥意義呢?當然有!

許多時候 X server 和 X client 在同一臺主機上,這看起來沒什麼。但是, X server 和 X client 完全可以執行在不同的機器上,只要彼此通過 X 協議通訊即可。於是,我們就可以做一些“神奇”的事情,比如像本文開頭談到的,在本地顯示 (X server),執行在伺服器上的 GUI 程式 (X client)。這樣的操作可以通過 SSH X11 Forwarding (轉發) 來實現。

X11 中的 X 指的就是 X 協議,11 指的是採用 X 協議的第 11 個版本。

3. MobaXterm

那 MobaXterm 又是什麼鬼?MobaXterm 是一款開源、免費的、全功能終端軟體。它與 PuTTY 類似,但卻比 PuTTY 要強大得多,其中一個很實用的功能就是 MobaXterm 自帶 X Server。這樣我們就不用勞神地去想怎麼在 Windows 上啟動 X server 了。

小結一下,整個實現邏輯就是:

本地機器採用 MobaXterm (自帶 X server) 連線遠端伺服器。然後,在伺服器上執行 GUI 程式 (即 X client),通過 SSH X11 Forwarding,轉發到本地 (Windows 機器上)。

二、實戰

1. 伺服器端

安裝 X11 Forwarding 相關軟體

1 sudo yum install xorg-x11-xauth xorg-x11-fonts-* xorg-x11-font-utils xorg-x11-fonts-Type1 xclock

啟用 X11 Forwarding

1 sudo vim /etc/ssh/sshd_config

將 X11Forwarding 和 X11UseLocalhost 前面的 # 去掉,並將 X11Forwarding 設定為 yes,X11UseLocalhost 設定為 no(這個修改我有疑惑的,不明白為啥修改)

複製程式碼
1 #AllowAgentForwarding yes
2 #AllowTcpForwarding yes
3 #GatewayPorts no
4 X11Forwarding yes
5 #X11DisplayOffset 10
6 X11UseLocalhost no
複製程式碼

重啟 sshd 服務

1 sudo systemctl restart sshd.service

2. 本地 (Windows 端)

下載並安裝 MobaXterm

遠端連線伺服器

注意到 X11-forwarding 和 DISPLAY 這兩項都打上了綠色的勾,代表設定成功了。

3. 驗證

在伺服器端執行一個 GUI 程式,如

1 xclock

這時候,你在本地 (Windows 端),就可以看到相應的圖形化介面(視窗)