SSH

解決問題 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 的連線。

相關資源

解決問題 Ansible (2)

教學目標

主要解決如何設定無須密碼進行 SSH 連線登入,以利使用 Ansible 工具進行遠端部署的問題。

重點概念

我們只需要透過簡單三步驟,就能夠無須密碼進行 SSH 連線登入,以利使用 Ansible 工具進行遠端部署。

新增遠端部署主機清單

1
$ sudo vi /etc/ssh_hosts
1
2
3
192.168.0.1
192.168.0.2
192.168.0.3

建立無須密碼的授權金鑰

1
2
$ ssh-keygen -q -t rsa -N '' -f ~/.ssh/id_rsa
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

複製授權金鑰至遠端部署主機中

1
$ for hst in `cat /etc/ssh_hosts`; do scp -r ~/.ssh/ $hst:~;  done;

總結透過簡單三步驟,就能夠無須密碼進行 SSH 連線登入,以利使用 Ansible 工具進行遠端部署,下一步我們將會進行 Ansible 遠端部署驗證與測試。

相關資源

解決問題 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 視窗介面。

相關資源