linux服務器通過X11實現圖形化界面顯示


背景描述

有些LINUX服務器出於性能和效率的考慮,通常都是沒有安裝圖形化界面的,那么圖形化程序在服務器上壓根兒就跑不起來,或者無法直接顯示出來,這就很尷尬了!那么如何解決這個問題呢?可以基於X11 Forwarding技術 + MobaXterm 工具,就可以輕松搞定,似不似很簡單?

原理介紹

2.1 X協議

 

 

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

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

l X server 管理主機上與顯示相關的硬件設置(如顯卡、硬盤、鼠標等),它負責屏幕畫面的繪制與顯示,以及將輸入設置(如鍵盤、鼠標)的動作告知 X client。

l X client (即 X 應用程序) 則主要負責事件的處理(即程序的邏輯)。

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

2.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 個版本。

2.3 MobaXterm

 

 

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

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

本地機器采用 MobaXterm (自帶 X server) 連接遠程服務器。然后,在服務器上運行 GUI 程序 (即 X client),通過 SSH X11 Forwarding,轉發到本地 (Windows 機器上)。

實戰介紹

3.1 服務器端(LINUX7.x)

3.1.1 修改SSH配置

[root@linux-template-7 ~]# cat /etc/ssh/sshd_config

X11Forwarding yes

X11UseLocalhost no -- 禁止將X11轉發請求綁定到本地回環地址上

AddressFamily inet -- 強制使用IPv4通道

3.1.2 重啟SSH服務

service ssh restart

3.2.1 Windows下連接Linux的ssh工具—MobaXterm

作為一個Windows操作系統用戶,如果想要連接Linux服務器來進行文件之間的傳送,那么需要一個Secure Shell軟件(簡稱SSH的)。
MobaXterm,是一款增強型終端、X服務器和Unix命令集(GNU/ Cygwin)封裝在一個單一的便攜式exe文件。MobaXterm可以開啟多個終端視窗,以最新的X服務器為基礎的X.Org,可以輕松地來試用Unix / Linux上的GNU Unix命令。這樣一來,我們可以不用安裝虛擬機來試用虛擬環境,然后只要通過MobaXterm就可以使用大多數的linux命令。
它不僅可以像PuTTY一樣通過SSH連接Raspberry Pi等開源硬件,並且還能: 

  • 內建多標簽和多終端分屏 
  • 內建SFTP文件傳輸 
  • 內建X server,可遠程運行X窗口程序 
  • 直接支持VNC/RDP/Xdmcp等遠程桌面 
  • 默認的UTF-8編碼 
  • 更加友好的串口連接設置 
  • 操作更明確,更少的“神秘技巧”

什么是X11 

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轉發是使用你家廚房做披薩) 
不理解也沒關系,會用能達到目的就好了。Via 
常用X Server有免費的Xming、收費的Xmanager(非常棒的Xshell終端軟件也是他家出的,家庭教育用戶免費使用) 等;上述需要手動配置,然而有了MobaXterm,一切都變得超級簡單!

軟件可以通過官網進行下載:

MobaXterm官網:https://mobaxterm.mobatek.net/

3.2.3 SSH連接服務器

 

 

3.2.4 執行xclock程序

已經彈出xclock圖形界面了,似不似很簡單,似不似很Easy,那就一起實踐下吧:)

 

 

 

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM