1. はじめに
WindowsクライアントからsshでLinuxに接続すると、GUIアプリケーションは使用できない。GUIアプリケーションを使うにはXmingやVNCなどのソフトウェアが必要だ。
また途中に踏み台サーバーがあると、ツールのインストールやポートフォワーディングなど考慮事項が増える。
個別にはいろいろなところで書かれているネタだが、今回は全体を整理すると共に、2020年現在の視点で書いてみる。
1-2. TL;DR
- WindowsクライアントでGUIアプリを実行する手段としてVNCやXサーバは有名だ
- しかし総合的にメリット/デメリットが語られていることは少ない
- クラウドではSSHの公開鍵認証を利用した踏み台経由の多段sshは重要なテクニックだ。パスワード認証やログインだけというネタはあっても「Xサーバ+公開鍵認証」となるとネタは少ない
- Linuxサーバ側の設定も含めて現時点で理想的な方法を導き出したい
1-3. 前提条件
- WindowsクライアントとLinuxサーバを使用していること
- LinuxはRHEL系ディストリビューションを想定しているが、Ubuntuなどでも考え方は同じ
- タイトルには「クラウド」と入っているが、パブリック・クラウドに限らず、プライベート・クラウドや、昔ながらのオン・プレミスでもかまわない
2. はじめに考えること
実際に設定する前に、どのような方法があるのか、またどれが自分に最適なのか。全体像を説明する。
2-1. GUIアプリケーションを使う2つの選択肢
GUIを使う方法はいろいろあるのだが、大きく分けると以下の2つに分類できる。
-
個別のGUIアプリケーション画面だけを利用する
XmingやVcXsrvなどWindows用のXサーバを使用。個別のアプリケーション画面をX11フォワーディング機能でWindowsクライアントに転送。GUIインストーラを使うなど、一時的にGUIを使用するときに便利。 -
フルデスクトップ環境を利用する
VNC Serverやxrdp(RDP)などを使用。Linux OSのデスクトップに接続して、デスクトップの全画面を表示。ローカルにあるサーバと同じ感覚でリモートのLinuxを利用できる。
それぞれを比較したのが以下の表である。VNCとxrdpは機能的には似ているが、異なる部分もあるので分けて書いている。
使用ツール | 表示範囲 | 設定にかかる時間 | サーバ上で動作するコンポーネント | クライアントへの追加インストール | 踏み台対応 | 通信経路の暗号化 | 使用ポート |
---|---|---|---|---|---|---|---|
XmingやVcXsrvなどのXサーバ | 特定のウィンドウ | 少ない | 必要最小限のライブラリのみ | 必要 | 多段sshなどが必要 | 暗号化済み | デフォルト22 |
VNC | デスクトップ全部 | 多い | デスクトップに必要なライブラリに加え、VNCサーバなども必要 | 必要 | 簡単 | 暗号化未対応 | 5901, 5902など同時に使用するユーザー数分 |
xrdp | 同上 | 同上 | 同上 | 不要 | 同上 | 暗号化済み | デフォルト3389 |
ヒント
フルデスクトップ環境を利用するには、サーバー側に標準のデスクトップ環境(graphical-server-environment)をインストールするのが一般的だ。
ただしサーバースペックが不足しているときは、軽量のデスクトップ環境「Xfce(エックス・エフ・シー・イー)」を使う方法もある。XfceはEPELで提供されており、EPELを有効にしたうえで、yum groupinstall Xfce
でインストールできる。
2-2. 方式を選択するうえで考慮すること
今回紹介した方式は「どちらが優れている」というものではなく、「どちらが適しているか」という視点で判断すべきだ。それぞれ特徴があるので、状況によって最適な方法を選択したい。また注意点もあるので補足する。
2-2-1. 踏み台サーバ対応
クラウドに限らず、エンタープライズ系でよくあるのが踏み台サーバの利用である。sshだけならばログインを2回繰り返すだけだが、GUIを飛ばすとなると、いくつかの選択肢がある。代表的な方法を紹介する。
-
踏み台がLinuxでデスクトップ環境なし(Xサーバ利用)
2段階でsshログインすることで、アクセス元のWindowsまでGUI画面を転送できる。ただしクラウドの場合、ログイン用の秘密鍵を踏み台におくことは好ましくないので、多段sshなどを検討する。 -
踏み台がLinuxでデスクトップ環境あり(VNC/xrdp利用)
VNCを使うと踏み台のデスクトップ全画面が表示される。あとは目的のサーバにsshで接続し、X-Window標準のDISPLAY転送機能を利用する。同様にxrdpを使うと、WindowsのRDPクライアントから、Linuxのデスクトップ全画面を表示できる。 -
踏み台がWindows
Windowsまではリモートデスクトップで接続し、その後はXmingやVcXsrvなどのXサーバ利用する。
2-2-2. クライアントツールをインストールできるか
企業のネットワークでは、クラウドに限らず別のネットワークに接続するときは、セキュリティ確保のため特定の踏み台サーバーを経由しなければならないことがある。そのような踏み台サーバーは厳重に管理されていることが多く、インストール権限の有無、ファイル配置権限の有無によって選択肢が異なる。
たとえばXmingやVcXsrvは、Windowsにデフォルトではインストールされていない。そのため踏み台サーバーに事前にインストールしてあるか、もしくはインストール権限が必要だ。VNCクライアントはインストールしなくても使えるが、実行ファイルを配置する権限が必要になる。
インストール権限も書き込み権限もないときには、Windows RDPクライアントを使用できるxrdpが唯一の選択肢になる。
2-2-3. ポート制限との戦い
方式によって必要なポートは異なる。細かい通信制限が行われていないネットワークでは気にする必要はないが、企業ネットワークでは制限されていることが多い。
そもそもインターネットへのアクセスが禁止されているネットワークもあるだろうし、許可されていてもhttp/https(80/443)程度という会社も多いはずだ。
そのため制限状況によって使用できるツールが限られる。最終的にどの方法が許可されているか、自社のネットワーク管理部門に確認すること。またクラウドの場合はインターネットVPN(IPSec VPNなど)や専用線などのセキュアな閉域網も検討できる。
それぞれの方式で使用するポートは以下の通り。
-
XmingやVcXsrvなどのXサーバを使用
sshと併用するため、sshで接続できれば利用できる。デフォルトは22。 -
VNCやxrdpなどを使用
VNCの1つめのディスプレイは5901。同時に複数ユーザで使用するときは、5902、5903など人数分のポートが必要。xrdpは3389。
2-2-4. 暗号化対応
VNCの通信は暗号化されていない。そのため閉域網以外で使用するときには、SSHポートフォワードなどと併用する。
3. 今回使用するツール
3-1. Xサーバを使用する
一通り説明してきたなかで、今回はもっとも手軽な以下の方法を説明する。サーバーにインストールするプログラムが最小限で、デーモンを起動する必要もないので、ライトウェイトな方法と言える。
踏み台がLinuxでデスクトップ環境なし(Xサーバ利用)
VNCクライアントやRDPを使用する方法は以下のエントリーで紹介している。操作例ではOCIを使用しているが、AWSやAzure、オンプレミスでもほとんどの内容は有効だ。
3-2. 使用するXサーバ
Windowsで稼働するXサーバとしてはXmingが有名だ。そして近年はVcXsrvの人気も高い。
-
Xming
http://www.straightrunning.com/XmingNotes/ (7.0以降)
https://sourceforge.net/projects/xming/ (6.9まで)
VcXsrvがGPLなのに対し、Xming 7.xは商用ライセンスで、Xming 6.9はBSDスタイルのライセンスだ。英語版WIKIPEDIAでXmingを見ると、6.9でもブレまくっているようだ。
7.7.0.38, proprietary
6.9.0.31, MIT License / August 31, 2015; 3 years ago, proprietary
May 4, 2007; 12 years ago, MIT License
**Xmingのライセンスが微妙なこともあり、今回はVcXsrvを使用する。**実際に触ると分かるが、Xmingとほぼ同じ感覚で利用できる。
4. 次回は?
次回は設定編だ。今回選んだVcXsrvを使って、WindowsクライアントからGUIアプリを実行するまでの手順を説明する。