WindowsのVcXsrv/TeraTermを使用し、sshログインしたユーザーとは異なるユーザーでX-Windowアプリを起動する手順

WindowsからsshでログインしたLinuxのX-Window画面をWindows上に表示する方法は、たまにしかやらないので、いつもネットで検索して時間がかかっていました。

最近はセキュリティが厳しくなっているので、Linuxのsshログインユーザーが個人ごとに割り当てられていることが多くなりました。
そうするとsshでログインしたユーザーと、X-Windowアプリを起動するユーザーが異なる場合があります。(OracleをGUIでインストールするときなど)
その場合、X-Window特有のおまじないを色々と実行しないといけないので、少し前に実施した手順を備忘録として残しておこうと思いました。 どなたかのお役になりましたら幸いです。

1. 前提

1-1. 環境

本手順確認で使用したソフトウェアは以下となります。

  • Windows環境
    • TeraTerm v4.106 (sshクライアント)
    • VcXsrv v1.20.9.0 (X-Server)
  • Linux環境
    • xclock (今回試すX-Windowアプリケーション)

1-2. Windows環境設定

本節に記載した設定は後述の「3. 参考情報」に詳細手順を記載しています。

1-2-1. VcXsrv

「Disable access control」がチェックされていること。 f:id:holyblue:20211030123510p:plain

1-2-2. TeraTerm

「リモートのXアプリケーションをローカルのXサーバーに表示する」をチェックしていること。

f:id:holyblue:20211031145210p:plain

2. sshログインしたユーザーとは異なるユーザーでX-Windowを起動する手順

(1) sshでLinuxサーバーへログインします。

(2) 別ユーザーでX-Windowを起動できるように以下のコマンドを実行します。

$ xhost +localhost
localhost being added to access control list

(3) 環境変数「DISPLAY」値から、現在のDISPLAY番号を確認します。

$ echo $DISPLAY
localhost:10.0

※上記例では、DISPLAY番号が「10」番であることが分かります。

(4) X-Windowの認証情報を確認します。

$ xauth list
サーバー名/unix:10  MIT-MAGIC-COOKIE-1  b3f494c11a11d9f032afe956b030dc33

(5) X-Windowを利用するユーザーへスイッチします。
※本例ではsudoコマンドを利用して別ユーザーへスイッチしています。

$ sudo su - ユーザー名

(6) 手順(4)で確認したX-Window認証情報を登録します。

$ xauth add サーバー名/unix:10  MIT-MAGIC-COOKIE-1  b3f494c11a11d9f032afe956b030dc33

※このときユーザーのホームディレクトリに「.Xauthority」ファイルが存在しない場合は 「xauth: file /home/ユーザー名/.Xauthority does not exist」というエラーが発生します。 その場合、touchコマンドで空の「.Xauthority」ファイルを作成して再度実行してください。

$ touch /home/ユーザー名/.Xauthority

(7) X-Window認証情報が登録されたことを確認します。

$ xauth list
サーバー名/unix:10  MIT-MAGIC-COOKIE-1  b3f494c11a11d9f032afe956b030dc33

※手順(6)で登録した認証情報が表示されます。

(8) 手順(3)で確認した「DISPLAY」環境変数を設定します。

$ export DISPLAY=localhost:10.0

(9) xclockを起動します。

$ xclock

Windows環境にxclockが表示されます。

f:id:holyblue:20211031155107p:plain

3. 参考情報

3-1. Windows環境整備

3-1-1. VcXsrv

3-1-1-1. VcXsrvインストール

以下からインストーラをダウンロードします。

sourceforge.net

インストーラを起動し、デフォルト設定でインストールしていきます。 f:id:holyblue:20211030105101p:plain

f:id:holyblue:20211030105130p:plain

f:id:holyblue:20211030105427p:plain

3-1-1-2. VcXsrv起動・設定

デスクトップにできたアイコン「XLaunch」をクリックします。

f:id:holyblue:20211030115236p:plain

設定画面が起動しますのでデフォルト設定で「次へ」をクリックします。 f:id:holyblue:20211030115605p:plain

デフォルト設定で「次へ」をクリックします。 f:id:holyblue:20211030115647p:plain

「Disable access control」をチェックして、「次へを」クリックします。 f:id:holyblue:20211030123510p:plain

「Save configuration」をクリックし、設定ファイル「config.xlaunch」を任意の場所に保存します。

f:id:holyblue:20211031163321p:plain f:id:holyblue:20211031163400p:plain

「完了」をクリックします。 f:id:holyblue:20211030123602p:plain

3-1-1-3. VcXsrv自動起動設定

毎回VcXsrvを使用する際に、デスクトップやスタートメニューの「XLaunch」を実行していると毎回設定をすることになり手間となります。 そのため、前手順で保存した設定ファイル「config.xlaunch」のショートカットをスタートアップに登録することで同じ設定で自動的に起動するようにします。

画面左下のスタートメニューを右クリックし、「ファイル名を指定して実行」をクリックします。

f:id:holyblue:20211031163738p:plain

「shell:startup」と入力し「OK」をクリックします。するとスタートアップを登録するフォルダがエクスプローラーで表示されます。 f:id:holyblue:20211031163841p:plain f:id:holyblue:20211031163940p:plain

このフォルダに、前手順で保存した設定ファイル「config.xlaunch」のショートカットを作成します。 f:id:holyblue:20211031164116p:plain

3-1-2. TeraTerm

3-1-2-1. TeraTermインストール

以下からインストーラをダウンロードします。

ja.osdn.net

インストーラを起動し、インストールしていきます。 f:id:holyblue:20211030124409p:plain f:id:holyblue:20211030124427p:plain f:id:holyblue:20211030124446p:plain f:id:holyblue:20211030124500p:plain f:id:holyblue:20211030124518p:plain f:id:holyblue:20211030124533p:plain f:id:holyblue:20211030124616p:plain f:id:holyblue:20211030124635p:plain f:id:holyblue:20211030124650p:plain

3-1-2-2. TeraTerm設定

TeraTermを起動し、メニューから「設定」-「SSH転送」をクリックします。 f:id:holyblue:20211031145147p:plain

「リモートのXアプリケーションをローカルのXサーバーに表示する」をチェックし、「OK」をクリックします。 f:id:holyblue:20211031145210p:plain

実施した設定変更内容を保存するため、TeraTermメニューから[設定]-[設定の保存]をクリックし、「TERATERM.INI」を上書きします。 f:id:holyblue:20211031145548p:plain f:id:holyblue:20211031145606p:plain f:id:holyblue:20211031145621p:plain