1. プロジェクト概要:なぜVS CodeでサーバーのGUIを表示する必要があるのか?
ローカルでPythonスクリプトを書き、matplotlib.pyplot.show()でグラフを描画する際、すべて正常に動作するという経験はありませんか?しかし、リモートLinuxサーバーに接続して同じコードを実行すると、ターミナルが直接TclError: no display name and no $DISPLAY environment variableというエラーを報告することがあります。あるいはOpenCVのcv2.imshow()を使用しても、ウィンドウは全く表示されません。さらにgnuplot、paraview、gedit、あるいはfirefoxを実行するなど、GUIを持つプログラムは、純粋なSSHコマンドライン環境下ではまるで封印されているかのようです。これはコードが間違っているわけではなく、最も重要な要素が欠けているからです:グラフィックス表示チャネルです。
この問題の背景には、X Window System(X11)の設計哲学があります:「グラフィックスのレンダリング」と「グラフィックスの表示」を完全に分離するというものです。サーバー側はグラフィックス命令(X Client)を生成するだけの役割を担い、実際にピクセルをスクリーンに描画する作業は、別のマシン上のX Serverに任せます。ローカルのWindowsやmacOSにはネイティブのX Serverがないため、リモートサーバーのGUIプログラムは「キャンバス」を見つけることができず、表示ができなくなります。vscode+mobaxtermでサーバーグラフィックスを実現するというのは、成熟し、安定し、ゼロコストの組み合わせソリューションを使ってこの壁を打ち破る方法です。VS Codeというローカルエディターを、リモートサーバーのGUIアプリケーションを操作する「透過的なウィンドウ」として機能させるのです。
キーワードvscode、mobaxterm、ForwardX11、DISPLAYは、それぞれ孤立して存在するわけではありません。mobaxtermは単なるSSHクライアントではなく、軽量なX Serverを内蔵しています。ForwardX11はグラフィックス転送専用に設計されたSSHプロトコルのトンネルメカニズムです。DISPLAYはX11世界の「住所番号」であり、各GUIプログラムに「あなたのキャンバスはどこにあるか」を伝えます。そしてvscodeはここで「指揮センター」の役割を担っています。直接グラフィックスをレンダリングするわけではありませんが、SSH接続をシームレスに統合し、環境変数を自動的に設定し、Remote-SSHプラグインを通じてグラフィックス転送チェーン全体を起動します。この組み合わせは、Xming+PuTTYを個別に設定するよりも10倍簡単で、VNCやRDPよりも100倍軽量であり、既存の開発ワークフローを完全に再利用できます。データの可視化、GUIツールのデバッグ、科学計算ソフトウェアの実行など、リモートLinuxサーバー上で行う必要がありながら、仮想デスクトップを面倒くさがる開発者、研究者、運用エンジニアに最適です。10以上のソリューションを試した結果、この組み合わせに固着しました。なぜなら、複雑さを背景に隠し、確実性をユーザーに提供してくれるからです。
2. 核心原理の解説:X11転送は魔法ではなく、精密なパイプライン工学です
サーバー上のxclockをローカルWindows画面で動作させるには、環環相連通信チェーンが背景にあります。多くの人がMobaXtermの「X11転送」チェックボックスをオンにすれば万事足りると考えていますが、auth guess: failed for display=':0のようなエラーで詰まってしまいます。問題はスイッチにではなく、パイプラインの各シール箇所にあります。層ごとに分解してみましょう。
2.1 X11プロトコルの3層アーキテクチャ:クライアント、サーバー、ディスプレイ
X11は「サーバーがレンダリングしてから画像を送信する」のではなく、「命令ストリームをリアルタイムで転送する」ものです。システムは3つの部分から構成されています:
- X Client(クライアント):実行中の
gedit、firefox、python -c "import matplotlib.pyplot as plt; plt.plot([1,2,3]); plt.show()"です。どのように描画するかは気にせず、「赤い点を描画する」、「青い線を描画する」といった命令を生成するだけです。 - X Server(サーバー):ローカルPC上で実行され、これらの命令を受信し、ディスプレイが理解できるピクセルに変換します。Windows上の一般的なX ServerにはMobaXtermに内蔵されているXming、VcXsrvがあります。macOSではXQuartzです。真の「キャンバス管理者」です。
- Display(表示名):これはX11世界の住所帳です。形式は
hostname:displaynumber.screennumberで、例えばlocalhost:10.0です。ここでdisplaynumberが重要です。これはX Serverが監視するTCPポート(6000 + displaynumber)に対応します。localhost:10はX Serverがlocalhost:6010ポートで命令を待機していることを意味します。DISPLAY環境変数は、X Clientに「localhost:10このアドレスにキャンバスを探しに行け」と伝えます。
ヒント:
auth guess: failed for display=':0というエラーの90%は、X Serverが起動していないか、起動したもののlocalhost:6000(つまり:0)を監視していないのに、DISPLAYが:0を指している場合に発生します。MobaXtermはデフォルトで:10を使用するため、:0と書き込む必然的に失敗します。
2.2 SSH X11転送:セキュアトンネルの確立ロジック
SSH自体はグラフィックスを転送するわけではなく、暗号化トンネルを提供するだけです。X11転送はSSHの拡張機能であり、3つのことを行います:
- X Serverの自動起動:MobaXtermで接続する際、ローカルX Serverが実行中かどうかを確認します。未実行の場合は自動的に起動し、ランダムなハイポート(例:6010)で監視し、
DISPLAY=localhost:10.0を設定します。 - 動的ポートマッピング:SSHクライアント(MobaXterm)はローカルで一時ポート(例:54321)を開き、リモートSSHサーバーに「このポートへのすべてのリクエストを私のX Server(localhost:6010)に転送してください」と伝えます。このマッピング関係はSSHプロトコル内部で協調的に決定され、ユーザーには見えません。
- 環境変数の注入:SSHサーバーが接続を受け取ると、リモートシェル内で自動的に
DISPLAY=127.0.0.1:11.0を設定します(注:ここではlocalhostではなく127.0.0.1であり、ポート番号は11です。SSHはローカルポート54321をリモートの11にマッピングするためです)。これにより、リモートで実行される任意のGUIプログラムは自動的にこのDISPLAYアドレスに命令を送信し、SSHトンネルを経由して最終的にローカルX Serverに到達します。
このプロセスの鍵は「自動」です。手動でexport DISPLAY=...する必要はなく、サーバーにX Serverをインストールする必要もありません。すべての設定がSSHプロトコルとMobaXtermによって協調的に完了されます。しかし、前提条件があります:両端のSSH設定がX11転送を許可している必要があります。
2.3 VS Codeの介入方法:Remote-SSHプラグインのスマートエージェント
VS Code自体はSSHクライアントではなく、そのRemote-SSHプラグインが核心です。Remote-SSHを介してサーバーに接続すると、その下層ではsshコマンドラインツールが呼び出されます。VS Codeの利点は以下の通りです:
- ローカルの
~/.ssh/configファイルを読み取り、そこにForwardX11 yesと書かれている場合、自動的に-Xパラメータを付けます。 - 設定されていなくても、接続時にMobaXtermが実行中かどうかを検出しようとします。検出した場合、独自に起動するのではなくMobaXtermのX Serverを再利用しようとします。
- より重要なのは、VS Codeのターミナル(Integrated Terminal)がRemote-SSH接続の環境変数を継承し、最も重要な
DISPLAYを含むことです。したがって、VS Codeで開くターミナルとMobaXtermで開くターミナルは、echo $DISPLAYの出力が同じです。
これにより閉ループが形成されます:VS Codeが開発環境を提供し、MobaXtermがX ServerとSSH接続を提供し、SSHプロトコルがセキュアトンネルを担当し、DISPLAY変数が正確なアドレス指定を担当します。4つはどれも欠かせませんが、相互にデカップルされています。VS Codeでコードを書き、MobaXtermでサーバーに接続し、VS Codeのターミナルで直接xclockを実行できます。すべてのGUIウィンドウがローカルデスクトップに正しく表示されます。
3. 実装の全プロセス:ゼロから始めて5分でグラフィックス表示チェーンを確立
このソリューションの最大の利点は「ボックスアウト・オブ・ザ・ボックス」ですが、各ステップがリズムよく踏まれていることが前提です。多くの人が3番目のステップで詰まります。MobaXtermを何度も再インストールしますが、実際の問題はSSHサーバー設定にあります。以下は100%成功を検証した完全なプロセスです。すべての詳細と避けるべきポイントを含みます。
3.1 環境準備:ローカルとリモートの「ハードウェア」が準備されていることを確認
ローカルWindows(MobaXterm側):
- 最新版MobaXtermをダウンロードしてインストールします(公式サイトから無料版で十分です)。インストール時には「Install MobaXterm X server」オプションを必ずチェックしてください。これは内蔵X Serverのスイッチです。
- MobaXtermを起動し、左上角の
Settings→Configuration→X11タブをクリックします: - ✅
Enable X11 forwardingをチェック(メインスイッチ) - ✅
Use X11 forwarding for all new SSH sessionsをチェック(毎回手動チェックを避ける) X11 remote compressionはデフォルトのまま(低速ネットワーク下での応答性向上)X11 local display numberを10に設定(デフォルト値で最も安全。ポート6010に対応)
注意:
X11 server portを変更しないでください!MobaXtermのX Serverはポートを動的に割り当てます。強制的に指定すると逆に競合が発生しやすくなります。display numberとportの変換関係は6000 + display numberです。:10は6010を意味します。
リモートLinuxサーバー(SSHサーバー側):
- サーバーにログインし、SSHサービス設定ファイルを編集:
sudo nano /etc/ssh/sshd_config - 以下の2行が
yesであり、コメントされていないことを確認(先頭の#を削除):
X11Forwarding yes
X11UseLocalhost yes
- 保存して終了し、SSHサービスを再起動:
sudo systemctl restart sshd(Ubuntu/Debian)またはsudo systemctl restart sshd.service(CentOS/RHEL) - 設定が有効になったことを確認:
sudo sshd -T | grep x11、出力はx11forwarding yesとx11uselocalhost yesであるべきです
重要な経験:
X11UseLocalhost yesはセキュリティロックです。SSHがX11トラフィックを127.0.0.1(つまりlocalhost)のみに転送するよう強制し、悪意のあるプログラムがDISPLAY変数を介してX Serverの権限を不正に取得するのを防ぎます。多くのチュートリアルではnoに設定するよう教えますが、これは重大なセキュリティリスクであり、絶対に実行しないでください。
3.2 接続テスト:最もシンプルなコマンドでパイプラインの接続を確認
VS Codeに急ぐ前に、最も原始的な方法で基本チェーンを検証しましょう:
- MobaXtermで新しいSSHセッションを作成し、サーバーIP、ユーザー名、パスワード(または鍵)を入力します。
- 重要なステップ:セッション設定の
Advanced SSH settingsでX11 forwardingを見つけ、✅チェックを入れてください。これはグラフィックス転送の「物理スイッチ」です。 - 接続が成功したら、MobaXtermのターミナルで以下を入力:
echo $DISPLAY
正常な出力はlocalhost:10.0または127.0.0.1:11.0(MobaXtermのバージョンによる)であるべきです。出力が空または:0の場合、X11転送が有効になっていない可能性があります。前のステップに戻って確認してください。
- 次にテストプログラムを実行:
xclock
もしアナログ時計のウィンドウがローカルWindowsデスクトップに表示されたら、おめでとうございます。基本チェーンは100%通っています!これは最も重要なマイルストーンです。
実用的なアドバイス:
xclockはX11の「Hello World」です。サイズが小さく、依存関係が少なく、起動が速いです。すぐにfirefoxやgeditを実行するのではなく、これらのプログラムは起動が遅く、依存関係が多く、失敗した場合にX11の問題なのかプログラム自身の問題なのか判断できません。xclockが成功すれば、X Server、SSHトンネル、DISPLAY変数がすべて正しいことが確認できます。
3.3 VS Codeの深統合:Remote-SSHプラグインの設定の秘訣
今VS Codeを統合し、それを主力開発環境にしましょう:
- VS Codeで公式プラグイン
Remote-SSH(作者Microsoft)をインストールします。 Ctrl+Shift+P(Windows)を押してコマンドパネルを開き、Remote-SSH: Connect to Host...と入力し、Add New SSH Host...を選択します。- SSH接続文字列を入力します。例:
ssh -X user@server_ip。ここでの-XパラメータはX11転送を強制有効にするスイッチであり、設定ファイルでForwardX11 yesを設定するよりも直接的で信頼性が高いです。 - VS CodeがSSH設定ファイルの場所の選択を求めます。
~/.ssh/configを選択すると、自動的に以下の設定が生成されます:
Host my-server
HostName server_ip
User user
ForwardX11 yes
- 保存後、リモートリソースマネージャーで
my-serverをクリックし、パスワードを入力して接続します。
接続が成功したら、VS Codeの統合ターミナル( Ctrl+ ``)を開き、echo $DISPLAYと入力します。出力はMobaXtermターミナル内のものと一致するはずです。これで、VS Code内で直接GUIプログラムを実行できます:
# VS Codeターミナルで実行
python3 -c "import matplotlib.pyplot as plt; plt.plot([1,2,3]); plt.show()"
# または
gnuplot -e "set terminal wxt; plot sin(x)"
すべてのグラフィックスウィンドウが、MobaXterm内と同様にローカルデスクトップに表示されます。
注意点:VS CodeのRemote-SSH接続は、MobaXtermのX Serverを自動的に継承しません。独自の方法でX Serverを起動しようとしますが、MobaXtermほど安定しません。したがって、ベストプラクティスは:まずMobaXtermでサーバーに一度接続し、そのX Serverを温めておく。その後VS Code Remote-SSHで接続するです。これによりVS CodeはMobaXtermのX Serverをシームレスに再利用し、重複起動とポート競合を避けられます。
3.4 グラフィックス表示の最適化:フォントぼやけ、スケーリング歪みなどの「視覚的バグ」を解決
チェーンの接続確保は第一歩です。プロフェッショナルグレードの表示効果を得るには、いくつかの微調整が必要です:
- フォントレンダリングの問題:リモートGUIプログラムがWindows上で中国語を表示すると、四角やぼやけとして表示されることがあります。解決策として
xfonts-baseとxfonts-75dpiをインストールします:
sudo apt update && sudo apt install xfonts-base xfonts-75dpi # Ubuntu/Debian
sudo yum install xorg-x11-fonts-misc xorg-x11-fonts-75dpi # CentOS/RHEL
インストール後、X Serverを再起動します(MobaXtermを閉じて再度開くだけでOK)。
- 高DPI画面の適応:2K/4Kノートパソコンを使用している場合、
xclockが小さすぎて見えないことがあります。MobaXtermのSettings→Configuration→X11でEnable DPI awarenessをチェックし、X11 scaling factorを200%に設定します(画面のDPIに応じて調整)。 - ウィンドウフォーカスの問題:時折GUIウィンドウが表示されても自動的にフォーカスを取得せず、手動でクリックする必要があります。これはX11プロトコルの固有の制限であり、根本的な解決はできません。しかし、起動スクリプトを追加してプログラム起動後に自動的にフォーカスを合わせることができます:
# ~/bin/guilaunch.shを作成
#!/bin/bash
$1 &
sleep 0.5
wmctrl -a "$(basename $1)" 2>/dev/null || true
まずwmctrlをインストールする必要があります:sudo apt install wmctrl。その後~/bin/guilaunch.sh geditで起動すると自動的にフォーカスが当たります。
4. よくある問題のトラブルシューティング:auth guess failedからcannot open displayまで
実際の操作では90%の問題が、DISPLAY変数、X Serverの状態、SSH設定の3点に集中します。これまでに踏んできたすべての落とし穴と対応するトラブルシューティングパスを、クイックリファレンステーブルとして整理しました。問題が発生した場合、順番にチェックすれば80%は5分以内に解決できます。
| 問題現象 | 可能な原因 | トラブルシューティングコマンド/ステップ | 解決策 |
|---|---|---|---|
No protocol specified Can't open display: localhost:10.0 |
DISPLAY変数が誤ったアドレスを指しているか、X Serverがそのアドレスを監視していない | echo $DISPLAY `netstat -tuln |
grep :60` |
auth guess: failed for display=':0 |
X Serverが全く起動していないか、:10を監視しているのに:0がハードコードされている |
`ps aux | grep X lsof -i :6000` |
X11 connection rejected because of wrong authentication |
SSHのX11認証キーが失われているか期限切れ | ls -la ~/.Xauthority `ssh -v user@server |
grep x11` |
| GUIウィンドウは表示されるが内容が全黒/空白 | X Serverのレンダリングエンジンとリモートプログラムの互換性がない(NVIDIAドライブ環境で一般的) | `glxinfo | grep "OpenGL renderer"` |
VS Codeターミナルでecho $DISPLAYが空 |
Remote-SSHが環境変数を正しく伝達していない | cat ~/.ssh/config ssh -X user@server 'echo $DISPLAY' |
SSH設定にForwardX11 yesがあること、接続時に-Xパラメータが使用されていることを確認。VS Codeで右クリック→リモート接続→Reopen in Current Windowを選択して環境を強制更新。 |
4.1 深度診断:ssh -vでトンネル内部を可視化
上記のテーブルで問題を特定できない場合、最終兵器であるSSH詳細ログを使用します。コマンドラインで以下を実行:
ssh -v -X user@server_ip
出力に以下のような重要な行があるか確認:
debug1: Requesting X11 forwarding with authentication spoofing.
debug1: X11 connection requested.
debug1: channel 0: new [client-session]
debug1: Requesting X11 forwarding for display 'localhost:10.0'.
X11転送関連のログが表示される場合、クライアント(MobaXtermまたはVS Code)がリクエストを送信したことを意味します。表示されない場合、-Xパラメータが全く効いておらず、問題はクライアント設定にあります。
次に、リモートサーバーでSSHサーバーがリクエストを受け取ったか確認します:
# サーバーでSSHログを確認
sudo tail -f /var/log/auth.log | grep X11
# またはjournalctlを使用
sudo journalctl -u sshd -f | grep X11
正常なログには以下が含まれるべきです:
sshd[12345]: debug1: X11 connection requested.
sshd[12345]: debug1: Setting up X11 forwarding.
ログにX11の文字が全く含まれていない場合、/etc/ssh/sshd_config内のX11Forwarding yesが有効になっていないか、SSHサービスが再起動されていない可能性が高いです。
4.2 最終代替案:MobaXtermが機能しない場合の手動X Server構築
稀なケース(例:会社のファイアウォールがMobaXtermのX Serverポートを厳しく制限している)では、MobaXtermをバイパスして手動でX Serverを構築する必要があります。この場合、VcXsrv(オープンソースで軽量、Windowsネイティブサポート)をお勧めします:
- VcXsrvをダウンロードし、インストール時に
Multiple windowsとStart no client after startupを選択します。 - VcXsrvを起動し、ウィザードでは:
- ✅
Disable access controlをチェック(開発環境では許容可能だが、本番環境では注意) - ✅
Native openglをチェック(3Dグラフィックスのパフォーマンス向上) Extra settingsでEnable trusted X11 forwardingをチェック(SSHのX11UseLocalhost noに対応)- 起動後、Windowsコマンドラインで:
set DISPLAY=localhost:0.0
ssh -Y user@server_ip # -Y(信頼された転送)を-Xの代わりに使用
- SSHセッション内で
echo $DISPLAYはlocalhost:0.0と表示され、xclockが実行可能になります。
重要な注意:
-Y(信頼済み)は-X(信頼されていない)よりも高い権限を持ち、リモートプログラムがより多くのX Server操作を実行できるようにしますが、より大きなセキュリティリスクも伴います。内部ネットワークの信頼できる環境でのみ使用し、パブリックサーバーでは絶対に有効にしないでください。
5. シナリオ拡張:xclockを超えて、サーバーGUIの生産性を解放
X11転送を確立することで、サーバーGUIエコシステムへの扉が開かれます。これは単に時計を見るためではなく、サーバーを「リモートワークステーション」に変えるためです。以下は高頻度で高価値のあるアプリケーションシナリオです。具体的なコマンドと実用的なテクニックを含みます。
5.1 データサイエンスの可視化:Matplotlib、Seaborn、Plotlyのオフラインレンダリング
Jupyter Notebook内で%matplotlib inlineを使用すると静的グラフしか生成できません。しかしX11を通じて、対話的な体験が得られます:
# VS CodeのPythonターミナルで実行
import matplotlib
matplotlib.use('TkAgg') # TkAggバックエンドを指定しないとagg(GUIなし)にフォールバックします
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 10, 100)
y = np.sin(x)
plt.figure(figsize=(10, 6))
plt.plot(x, y, 'b-', linewidth=2, label='sin(x)')
plt.xlabel('x')
plt.ylabel('y')
plt.title('Interactive Plot via X11')
plt.legend()
plt.grid(True)
plt.show() # ここでスケール可能、ドラッグ可能なウィンドウが表示されます
テクニック:plt.show()はデフォルトでQt5Aggバックエンドを使用しますが、リモートサーバーには通常Qtライブラリがインストールされていません。TkAggはtkinterに依存し、ほとんどのLinuxディストリビューションに事前インストールされているため、最も安全な選択です。ImportError: No module named '_tkinter'というエラーが表示された場合は、Ubuntuでsudo apt install python3-tkをインストールしてください。
5.2 科学計算とシミュレーション:ParaView、Gnuplot、Octaveのグラフィカル分析
ParaViewは大規模な3D科学データを処理する強力なツールであり、そのGUIはX11転送に非常に親和性があります:
# サーバーでParaViewがインストールされていることを確認
# Ubuntu: sudo apt install paraview
# CentOS: sudo yum install paraview
# ParaViewを起動し、.vtkまたは.exodusファイルを読み込む
paraview --data=/path/to/your/data.vtk
ウィンドウはネイティブ解像度で表示され、サーバーにNVIDIAグラフィックスカードと正しいドライバーがある場合はGPUアクセラレーションをサポートします。Web版ParaViewと比較して、ローカルX11転送の遅延は低く、操作はよりスムーズです。
Gnuplotは迅速なプロット作成に適しています:
gnuplot -e "
set terminal wxt size 1200,800 enhanced font 'arial,12';
set title 'Temperature Profile';
set xlabel 'Time (s)';
set ylabel 'Temp (°C)';
plot '/tmp/temp_data.dat' with lines lw 2;
pause mouse key;
"
pause mouse keyはウィンドウを開いたままにし、任意キーを押すまで閉じないため、繰り返し確認するのに便利です。
5.3 開発とデバッグ:GDB TUI、Git GUI、Eclipseリモートデバッグ
コマンドラインデバッガーGDBはTUI(Text User Interface)モードと組み合わせると、ソースコード、アセンブリ、レジスタの3つのビューを表示できます:
gdb -tui ./my_program
(gdb) layout src # ソースビューに切り替え
(gdb) run
TUIモードはncursesに依存しますが、X11転送を介して独立ウィンドウで実行できるため、端画面内に埋め込むよりもはるかにクリアです。
Git GUIは公式のグラフィカルGitクライアントです:
git gui
これはブランチ、コミット履歴、ステージングエリアを直感的に表示でき、特にチームの新人にデモンストレーションするのに適しています。
Eclipse IDE自体はリモートデプロイ可能ですが、X11転送を介して、Eclipseをサーバー全体にインストールし、ローカルを表示端末としてのみ使用することもできます:
# サーバーでEclipseをインストール(Java環境が必要)
wget https://ftp.jaist.ac.jp/pub/eclipse/technology/epp/downloads/release/2023-09/R/eclipse-java-2023-09-R-linux64.tar.gz
tar -xzf eclipse-java-2023-09-R-linux64.tar.gz
./eclipse/eclipse
起動は遅いですが、すべての計算はサーバー側で行われ、ローカルでは表示リソースのみを消費するため、大規模プロジェクトを処理するのに非常に適しています。
5.4 システム管理と運用:GParted、Gnome-System-Monitor、htopのグラフィカル化
GPartedはLinuxディスクパーティションの強力なツールであり、X11転送を介してリモートサーバー上で安全にパーティションを調整できます:
sudo apt install gparted # Ubuntu
sudo yum install gparted # CentOS
sudo gparted
注意:sudoはDISPLAY変数をリセットし、エラーを引き起こします。正しい方法は以下の通りです:
sudo env DISPLAY=$DISPLAY gparted
またはより安全な方法で、pkexec(PolicyKit)を使用します:
pkexec gparted
Gnome-System-Monitorはtopより直感的なシステムリソースモニタリングを提供します:
gnome-system-monitor
これはCPU、メモリ、ネットワーク、プロセスツリーをリアルタイム表示し、CPU/メモリで並べ替えが可能です。プロセスをダブルクリックすると直接終了できます。
最後にhtopを忘れないでください。これはtopの強化版ですが、X11転送の端末(MobaXtermなど)と組み合わせると、色とレイアウトがより快適になります。
実際の使用において、このソリューションが最も魅力的な点は、技術がどれほど派手かではなく、「リモート」と「ローカル」の境界を完全に曖昧にしてくれることにあります。もはや遠く離れたサーバーを操作していると感じるのではなく、より高スペックで、ストレージが大きい「2台目のコンピューター」を使用しているかのように感じます。コードを書き、グラフを描画し、デバッグし、管理するすべての操作は、まるでローカルで行っているかのように自然です。覚えておく必要があるのは、DISPLAYという変数だけです。これはX11世界の鍵であり、MobaXtermとVS Codeがあなたのためにこの鍵を非常に使いやすく磨き上げてくれています。