MobaXterm

解決問題 X11 (3)

教學目標

初步了解如何解決無法正常透過 MobaXterm 連線至 RedHat 7.5 作業系統呈現畫面進行操作的問題。

重點概念

首先最近透過 AWS 雲端服務新增一個 RedHat 7.5 的 EC2 作業系統,此時我們需要透過 MobaXterm 中的 X11 呈現畫面時,碰到了些問題,並且進行解決。一開始會因為 DISPLAY 沒有設定的問題導致無法正常連線至 X11 呈現畫面,此時我們能夠先設定 DISPLAY 的環境變數。

1
$ export DISPLAY=192.168.0.1:0.0

接著我們需要修改 X11 相關設定檔 sshd_config,主要將 X11Forwarding 設為 Yes 和 X11UseLocalhost 設為 no。

1
2
3
$ sudo vi /etc/ssh/sshd_config
X11Forwarding yes
X11UseLocalhost no

再來我們需要安裝 X11 相關套件,主要安裝 X Window System 相關套件和安裝 xclock 進行 X11 的測試。

1
2
3
4
$ sudo yum groupinstall "X Window System"
$ sudo yum install xorg-x11-xauth xorg-x11-fonts-* xorg-x11-font-utils xorg-x11-fonts-Type1
$ sudo yum install xclock
$ xclock

最後我們將會遇到有些工具的畫面中的字元皆呈現方框,導致我們無法正常操作,此時請下載dejavu-lgc-sans-fonts 套件檔案進行安裝即可解決無法正常顯示字元的問題,此外我們更能夠點選「Settings」->「Configuration」->「X11」設定 X Window System 相關選項。

1
$ sudo yum install  dejavu-lgc-sans-fonts-2.33-6.el7.noarch.rpm

總結我們能夠透過 MobaXterm 工具連線至 RedHat 7.5 作業系統的環境,並且在安裝相關套件之後,就能夠透過 X Window System 呈現圖形化介面。

相關資源

解決問題 X11 (2)

教學目標

主要解決當使用 X11 視窗介面進行操作時無法正常連線的問題。

重點概念

嘗試連線 X11 Forwarding

方式一

連線至伺服器主機,若我們需要啟用 SSH 客戶端 X11 Forwarding 功能,則要先啟動 X 伺服器在工作站上,接著連線至 Linux 作業系統,透過 -X 參數啟用 SSH 客戶端 X11 Forwarding 功能。

1
$ ssh -X [使用者帳號]@[伺服器主機/伺服器 IP]

方式二

連線至伺服器主機,接著透過 xhost 程式主要被使用於增加和刪除主機名稱或使用者名稱至被允許建立連線的清單中,也就是 X11 伺服器存取控制工具,用於控管哪些 X11 客戶端能夠在 X 伺服器上顯示,「xhost +」為關閉存取控制,允許任何主機存取本機的 X11 伺服器,「xhost -」為打開存取控制,僅允許授權清單中的主機存取本地的 X 伺服器,至於為何透過 xhost 嘗試連線 X11 Forwarding 功能,因為 xhost 執行會使用 X11 Forwarding 功能,若是無法正常使用,則會出現錯誤訊息。

1
2
$ ssh [使用者帳號]@[伺服器主機/伺服器 IP]
$ xhost

確認 .Xauthority 檔案內容

當使用者透過 ssh 登入時,理論上皆會在個人目錄中的 .Xauthority 檔案建立新的授權資訊,但是若我們直接著透過 「vi」 開啟 .Xauthority 檔案時,則會有部份內容為亂碼,因為是二進位格式。為了正常顯示 .Xauthority 檔案,此時我們主要會透過「xauth list」查看 .Xauthority 檔案內容,此外透過「xauth remove [伺服器主機/伺服器 IP]/unix:0」即可刪除對應的授權內容,以及透過「xauth add」和「xauth generate」手動產生對應的授權內容。

1
2
$ xauth list
[伺服器主機/伺服器 IP]/unix:0 MIT-MAGIC-COOKIE-1 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

確認 SSH 伺服器之 X Forwarding 設定

1
2
$ cat /etc/ssh/sshd_config  | grep X11Forwarding
X11Forwarding yes

確認 SSH 客戶端之 X Forwarding 設定

1
2
3
$ cat /etc/ssh/ssh_config | grep ForwardX11
ForwardX11 yes
ForwardX11Trusted yes

變更 .Xauthority 檔案權限

1
$ sudo chown [使用者帳號]:[使用者群組] .XAuthority

重新安裝 XAUTH 套件

1
$ yum install xorg-x11-xauth

實務案例說明

當使用者透過 MobaXterm 工具登入 Linux 作業系統時,則會在使用者的目錄中「/home/使用者帳號」產生 .Xauthority 檔案,此時我們透過下述指令查看 .Xauthority 檔案內容,因為 .Xauthority 檔案是二進位檔案,所以無法直接透過 cat 或 vi 查看。

1
2
$ xauth list
伺服器主機名稱/unix:10 MIT-MAGIC-COOKIE-1 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

此時我們執行「firefox」指令將能夠透過 X11 Forwarding 開啟 Firefox 瀏覽器。

1
$ firefox

但是若我們執行「sudo su」指令切換至 root 使用者帳號行「firefox」指令將會發生下述錯誤。

1
2
3
$ firefox
X11 connection rejected because of wrong authentication.
Error: cannot open display: localhost:10.0

此時我們先確認 .Xauthority 檔案內容,主要透過「xauth list」進行確認,將發現 .Xauthority 檔案未建立,所以我們只需建立 .Xauthority 檔案就夠正常使用 X11 Forwarding 功能。

1
2
$ xauth list
xauth: creating new authority file /root/.Xauthority

接著我們將使用者目錄下的 .Xauthority 檔案複制至 root 目錄,理應就能夠正常透過 X11 Forwarding 開啟 Firefox 瀏覽器。

1
2
3
4
$ cp /home/[使用者帳號]/.Xauthority /root/.XAuthority
$ xauth list
[伺服器主機/伺服器 IP]/unix:10 MIT-MAGIC-COOKIE-1 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
$ firefox

總結我們可以了解決若要使用 X11 Forwarding 的功能則會在每次 ssh 登入之後,在個人目錄下產生 .Xauthority 檔案進行驗證之後,才能夠進行 X11 Forwarding 的連線。

相關資源

解決問題 X11 (1)

教學目標

主要解決當我們需要在 Linux 作業系統中進行部署軟體時,將會需要使用 X11 視窗介面進行操作的問題。

重點概念

當我們需要在 Linux 作業系統中進行部署軟體時,將會需要使用 X11 視窗介面進行操作,若我們經安裝「MobaXterm 」軟體的情況之下,就能夠透過簡單三步驟在 Windows 作業系統中操作 Linux 作業系統的應用程式畫面。

  1. 開啟「MobaXterm」軟體,點選「Sessions」->「New session」,點選「SSH」,輸入「Remote Host」為 Linux 作業系統的主機名稱或 IP 位置,此外可以勾選「Specify Username」輸入登入的使用者名稱。
  2. 輸入登入使用者名稱的密碼,按下「Enter」鍵之後,將會出現「Do you want to save password for …」訊息,按下「Yes」進行密碼儲存, 此時 MobaXterm 將會自動加密儲存至本機電腦中,待下次登入時直接使用。
  3. 請先在右方的瀏覽資料夾視窗中,點選應用程式所在的資料夾,按右鍵選取「Permissions」,確認「User」是否具有「Execute」的權限,按下「Apply」,接著就能夠透過 Linux 指令切換至該目錄直接執行應用程式檔 (*.sh),這時就會在 Windows 作業系統中啟動 Linux 應用程式的 X11 視窗介面,請參考下述範例指令。
1
2
$ cd /Software/bin
$ ./setup.sh

總結我們透過「MobaXterm」軟體可以很輕鬆的連線至 Linux 作業系統中,同時直接執行應用程式檔 (*.sh) 就能夠在 Windows 作業系統中啟動 Linux 應用程式的 X11 視窗介面。

相關資源