2026年10月追記
初出(2019年)から時間が経ったため、現在の状況に合わせて内容を見直しました。おもな変更点は、VNCの暗号化に関する記述の訂正、RHEL 10での変更(Xorgの削除、TigerVNCからRDPへの移行)、VcXsrvの配布元の変更、WSLgやマネージド踏み台サービスなど新しい選択肢の追加です。
1. はじめに
WindowsクライアントからsshでLinuxに接続しただけでは、GUIアプリケーションは使用できない。GUIアプリケーションを使うには、XサーバやVNCなどのソフトウェアが必要だ。
また、途中に踏み台サーバがあると、ツールのインストールやポートフォワーディングなど、考慮事項が増える。
個別にはいろいろなところで書かれているネタだが、今回は全体を整理するとともに、執筆時点の視点で理想的な方法を考えてみる。
1-1. 動機
- WindowsクライアントでGUIアプリを実行する手段として、VNCやXサーバは有名だ
- しかし、総合的にメリット/デメリットが語られていることは少ない
- クラウドでは、SSHの公開鍵認証を利用した踏み台経由の多段sshが重要なテクニックだ。パスワード認証やログインだけのネタはあっても、「Xサーバ+公開鍵認証」となるとネタは少ない
- Linuxサーバ側の設定も含めて、現時点で理想的な方法を導き出したい
1-2. 前提条件
- WindowsクライアントとLinuxサーバを使用していること
- LinuxはRHEL系ディストリビューションを想定しているが、Ubuntuなどでも考え方は同じ
- タイトルには「クラウド」と入っているが、パブリック・クラウドに限らず、プライベート・クラウドや昔ながらのオンプレミスでもかまわない
2. はじめに考えること
実際に設定する前に、どのような方法があり、どれが自分に最適なのか、全体像を説明する。
2-1. GUIアプリケーションを使う2つの選択肢
GUIを使う方法はいろいろあるが、大きく分けると以下の2つに分類できる。
-
個別のGUIアプリケーション画面だけを利用する
VcXsrvなどのWindows用Xサーバを使用し、個別のアプリケーション画面をX11フォワーディング機能でWindowsクライアントに転送する。GUIインストーラを使うなど、一時的にGUIを使用するときに便利。 -
フルデスクトップ環境を利用する
VNCサーバやxrdp(RDP)などを使用し、Linux OSのデスクトップに接続して、デスクトップの全画面を表示する。ローカルにあるサーバと同じ感覚で、リモートのLinuxを利用できる。
それぞれを比較したのが以下の表である。VNCとxrdpは機能的には似ているが、異なる部分もあるので分けて書いている。
| 使用ツール | 表示範囲 | 設定にかかる時間 | サーバ上で動作するコンポーネント | クライアントへの追加インストール | 踏み台経由の手間 | 通信経路の暗号化 | 使用ポート |
|---|---|---|---|---|---|---|---|
| VcXsrvなどのXサーバ | 特定のウィンドウ | 少ない | 必要最小限のライブラリのみ | 必要(WSLgがあれば不要) | 多段sshなどが必要 | 暗号化済み(ssh) | デフォルト22 |
| VNC | デスクトップ全部 | 多い | デスクトップに必要なライブラリに加え、VNCサーバなども必要 | 必要 | 少ない | 実装・設定による | 5901, 5902など同時に使用するユーザ数分 |
| xrdp | 同上 | 同上 | 同上 | 不要 | 少ない | 暗号化済み(TLS) | デフォルト3389 |
フルデスクトップ環境を利用するには、サーバ側に標準のデスクトップ環境(Server with GUI)をインストールするのが一般的だ。
ただし、サーバのスペックが不足しているときは、軽量のデスクトップ環境「Xfce」を使う方法もある。XfceはEPELで提供されており、EPELを有効にしたうえで、dnf groupinstall "Xfce"でインストールできる(RHEL 7以前はyum groupinstall Xfce)。なお、Xorgが削除されたRHEL 10系で利用できるかは、EPELの提供状況を確認してほしい。
RHEL 10系での変更点
- TigerVNCサーバが標準リポジトリから削除された。リモート・デスクトップは、GNOMEのRDP機能(gnome-remote-desktop)で提供される
- Xorgサーバが削除され、デスクトップはWaylandのみになった。X11アプリケーションはXwayland経由で動作する
詳細はRed Hatのマニュアルを確認してほしい。
2-2. 方式を選択するうえで考慮すること
今回紹介した方式は「どちらが優れている」というものではなく、「どちらが適しているか」という視点で判断すべきだ。それぞれ特徴があるので、状況によって最適な方法を選択したい。また、注意点もあるので補足する。
2-2-1. 踏み台サーバ対応
クラウドに限らず、エンタープライズ系でよくあるのが踏み台サーバの利用である。sshだけならばログインを2回繰り返すだけだが、GUIを飛ばすとなると、いくつかの選択肢がある。代表的な方法を紹介する。
-
踏み台がLinuxでデスクトップ環境なし(Xサーバ利用)
2段階でsshログインすることで、アクセス元のWindowsまでGUI画面を転送できる。ただし、クラウドの場合はログイン用の秘密鍵を踏み台に置くことは好ましくないので、多段sshを使う。OpenSSH 7.3以降のProxyJump(ssh -J)を使えば、踏み台に秘密鍵を置かずに目的のサーバへ接続できる。Windows 10/11には標準でOpenSSHクライアントが入っているので、追加インストールなしで利用できる。 -
踏み台がLinuxでデスクトップ環境あり(VNC/xrdp利用)
VNCを使うと、踏み台のデスクトップ全画面が表示される。あとは目的のサーバにsshで接続し、X Window Systemの標準機能であるX11フォワーディングを利用する。同様にxrdpを使うと、WindowsのRDPクライアントから、Linuxのデスクトップ全画面を表示できる。 -
踏み台がWindows
Windowsまではリモート・デスクトップで接続し、その後はVcXsrvなどのXサーバを利用する。
マネージドな踏み台サービス
最近は、クラウド事業者が踏み台をマネージド・サービスとして提供している(OCI Bastion、AWS Systems Manager Session Manager、Azure Bastion、Google CloudのIAP TCP転送など)。踏み台サーバを自分で構築・管理しなくても、SSH接続やポート転送ができるので、新規に構築するならば検討する価値がある。
2-2-2. クライアントツールをインストールできるか
企業のネットワークでは、クラウドに限らず別のネットワークに接続するときに、セキュリティ確保のため特定の踏み台サーバを経由しなければならないことがある。そのような踏み台サーバは厳重に管理されていることが多く、インストール権限やファイル配置権限の有無によって選択肢が異なる。
たとえば、VcXsrvなどのXサーバはWindowsにデフォルトではインストールされていない。そのため、踏み台サーバに事前にインストールしてあるか、インストール権限が必要だ。VNCクライアントはインストールしなくても使えるものが多いが、実行ファイルを配置する権限が必要になる。
インストール権限も書き込み権限もないときには、WindowsのRDPクライアントを使用できるxrdpが有力な選択肢になる。また、Windows 11などでWSLgを利用できる環境ならば、Xサーバを別途インストールしなくてもX11フォワーディングを利用できる(3-3参照)。
2-2-3. ポート制限との戦い
方式によって必要なポートは異なる。細かい通信制限が行われていないネットワークでは気にする必要はないが、企業ネットワークでは制限されていることが多い。
そもそもインターネットへのアクセスが禁止されているネットワークもあるだろうし、許可されていてもhttp/https(80/443)程度という会社も多いはずだ。
そのため、制限状況によって使用できるツールが限られる。最終的にどの方法が許可されているか、自社のネットワーク管理部門に確認すること。また、クラウドの場合はインターネットVPN(IPsec VPNなど)や専用線などのセキュアな閉域網も検討できる。
それぞれの方式で使用するポートは以下のとおり。
-
VcXsrvなどのXサーバを使用
sshと併用するため、sshで接続できれば利用できる。デフォルトは22。 -
VNCやxrdpなどを使用
VNCの1つめのディスプレイは5901。同時に複数ユーザで使用するときは、5902、5903など人数分のポートが必要。xrdpは3389。 -
HTTPSだけで利用する
Apache GuacamoleのようなHTML5ゲートウェイを使うと、ブラウザからHTTPS(443)経由でRDP、VNC、SSHを利用できる。80/443しか通らない環境では選択肢になる。
2-2-4. 暗号化対応
VNCの暗号化は、実装と設定によって異なる。TigerVNCなどの主要な実装はTLS(VeNCrypt)による暗号化に対応しているが、設定によっては暗号化されない通信も許可される。閉域網以外で使用するときは、暗号化の設定を確認するか、SSHポートフォワードと併用するのが確実だ。
3. 今回使用するツール
3-1. Xサーバを使用する
ひととおり説明してきたなかで、今回はもっとも手軽な以下の方法を説明する。サーバにインストールするプログラムが最小限で、デーモンを起動する必要もないので、ライトウェイトな方法といえる。
踏み台がLinuxでデスクトップ環境なし(Xサーバ利用)
VNCクライアントやRDPを使用する方法は、以下のエントリーで紹介している。操作例ではOCIを使用しているが、AWSやAzure、オンプレミスでもほとんどの内容は有効だ。
3-2. 使用するXサーバ
Windowsで稼働するXサーバとしては、Xmingが有名だ。そして近年はVcXsrvの人気も高い。
-
VcXsrv
https://github.com/marchaesen/vcxsrv (現在の配布元。Releasesからダウンロードする)
https://sourceforge.net/projects/vcxsrv/ (旧配布元。1.20系で更新が止まっている) -
Xming
http://www.straightrunning.com/XmingNotes/ (7.0以降)
https://sourceforge.net/projects/xming/ (6.9まで)
VcXsrvがGPLv3なのに対し、Xmingは最新版(7.x)が寄付をした人向けの配布となっており、無償で入手できるのは古い6.9系だ。6.9系のライセンス表記も、資料によって異なる。
Xmingは入手方法とライセンスがわかりにくいこともあり、今回はVcXsrvを使用する。 実際に触るとわかるが、Xmingとほぼ同じ感覚で利用できる。
ほかにも、SSHクライアントとXサーバが一体になったMobaXterm(無償版あり)や、Microsoft Storeで購入できるX410などの選択肢がある。
3-3. WSLgという選択肢
Windows 11(またはMicrosoft Store版のWSL)では、WSLgによってWSL上のLinuxでGUIアプリを直接表示できる。WSLgにはXサーバとWaylandサーバが組み込まれているので、WSLのLinuxからssh -X(またはssh -Y)でリモートのLinuxサーバに接続すれば、Xサーバを別途インストールしなくてもGUIアプリを表示できる。
WSLを利用できる環境ならば、もっとも手軽な方法になるだろう。ただし、企業のPCではWSLの利用が制限されていることもあるので、事前に確認してほしい。
Wayland時代のX11フォワーディング
RHEL 10のようにWaylandが標準になっても、X11フォワーディングはXwaylandやX11対応のアプリで引き続き利用できる。Waylandネイティブのアプリを転送したいときは、Waypipeというツールもある。
4. 次回は?
次回は設定編だ。今回選んだVcXsrvを使って、WindowsクライアントからGUIアプリを実行するまでの手順を説明する。
