LinuxでSSH経由でX11フォワーディングを設定する方法

X11フォワーディングを使用すると、リモートコンピュータでグラフィカルなLinuxアプリケーションを実行し、SSH経由でそのウィンドウをローカルデスクトップに表示できます。設定するには、リモートSSHサーバーでフォワーディングを有効にし、サーバーにX11がインストールされていることを確認しxauth、ローカルデスクトップにXディスプレイがあることを確認し、X11で接続しますssh -X。これは個々のアプリケーションウィンドウを転送するもので、完全なリモートデスクトップセッションを作成するものではありません。

セットアップ前に必要なもの

SSHコマンドを入力するコンピュータはクライアントです。クライアントにはOpenSSHクライアントと、Xディスプレイを備えたアクティブなグラフィカルデスクトップセッションが必要です。多くのLinuxデスクトップは、セッションがWaylandを使用している場合、これを直接、またはXWaylandを介して提供します。echo "$DISPLAY"ローカルデスクトップで何も表示されない場合、そのシェルではSSHが使用できるディスプレイがありません。

リモートコンピュータはサーバーです。転送されたディスプレイに使用される一時的な認証クッキーをSSHが作成できるように、OpenSSHサーバーとユーティリティが必要です。DebianまたはUbuntuでは、とxauthを使用してリモートシステムにインストールします。他のディストリビューションでは、パッケージマネージャを使用してOpenSSHサーバーとを提供するパッケージをインストールします。設定を変更する前に、通常のSSHログインが機能するようにしてください。sudo apt updatesudo apt install openssh-server xauthxauth

ローカルシステムで見つかったsshコマンドとxauthコマンドを表示するLinuxターミナル
ローカル端末でOpenSSHクライアントが実行できることを確認してください。リモートサーバー側でもxauthが必要です。

SSH経由でX11転送を設定する

1. サーバー設定で転送を有効にする

リモートコンピュータ上で、通常はサーバー構成ファイル()を、/etc/ssh/sshd_config管理者権限を持つエディタを使用して編集します。

sudoedit /etc/ssh/sshd_config

既存の有効なX11Forwarding設定を見つけて、次のように変更します。

X11Forwarding yes

設定が存在しない場合は、どのMatchブロックの前にもグローバル セクションに追加してください。一部のディストリビューションでは/etc/ssh/sshd_config.d/、ファイルもロードされます。含まれているファイルに競合する設定がないか確認してください。Matchルールまたはによって、DisableForwarding yes特定のアカウントの転送が妨げられる場合があります。X11UseLocalhost特定の互換性の問題がない限り、デフォルトのままにしておいてください。OpenSSH は通常、転送プロキシをループバックにバインドします。これらのサーバー側オプションについては、公式のsshd_config マニュアルを参照してください。

有効な X11Forwarding yes ディレクティブを使用した SSH サーバーの設定
サーバー設定は、SSHクライアントファイルであるssh_configではなく、sshd_configに記述する必要があります。

2. 設定を検証し、SSHを再起動します。

デーモンを再起動する前に、ファイルに構文エラーがないか確認し、有効な転送値を確認してください。

sudo sshd -t
sudo sshd -T | grep -i '^x11forwarding'

最初のコマンドはエラーなく終了するはずです。2番目のコマンドはエラーを報告するはずですx11forwarding yes。ルールを使用する場合はMatch、OpenSSHマニュアルに記載されている手順に従って、該当するユーザーと接続の有効な設定をテストしてください。SSHアクセスが中断されないように、再読み込みする前にエラーを修正してください。

お使いのディストリビューションで使用されているサービス名を再読み込みしてください。DebianとUbuntuでは一般的に以下のサービス名が使用されます。

sudo systemctl reload ssh

FedoraおよびRHEL系システムでは、一般的に以下のものが使用されます。

sudo systemctl reload sshd

リロードがサポートされていない場合は、restart同じサービスに対して を使用してください。現在のセッションを開いたままにして、閉じる前に新しい接続をテストしてください。Ubuntu のOpenSSH サーバーのドキュメントには、Ubuntu で使用されるサーバー ファイルと設定スニペットが記載されています。

3. ローカルのLinuxデスクトップから接続します。

クライアント側で、信頼できないX11転送を次のように要求します-X。

ssh -X user@server.example.com

例のユーザー名とホスト名を、ご自身のものに置き換えてください。SSHサーバーが標準以外のポートでリッスンしている場合は、ポート番号を : で追加してください-p。

ssh -X -p 2222 user@server.example.com

ログイン後、リモートホストにインストールされているグラフィカルプログラムを起動してください。簡単な確認として、xclockテストアプリケーションが利用可能かどうかを実行するか、インストール済みの別のGUIプログラムを起動してください。SSHはリモートセッションのDISPLAY値を自動的に設定し、X11接続を転送します。ローカルディスプレイの値をサーバーにコピーしたり、手動で設定したりしないでください。

ローカルのLinuxターミナルからssh -Xを使用してリモートホストに接続します。
この-Xオプションは、SSHセッション開始時にX11フォワーディングを要求するものです。
Linuxデスクトップ上のSSHターミナルの横に表示されるリモートxclockアプリケーション
転送されたGUIアプリケーションは、SSHセッションが開いたままの状態で、ローカルデスクトップ上にウィンドウとして表示されます。

セキュリティとトラブルシューティング

-Xデフォルトで有効になっています。この-Yオプションを有効にすると、信頼できる転送が有効になり、X11 SECURITY の制限が解除され、リモート アプリケーションがローカル ディスプレイに広くアクセスできるようになります。信頼できるサーバーとアプリケーションでのみ使用してください。OpenSSH は、X11 転送によってクライアント ディスプレイが攻撃にさらされる可能性があると警告しています。信頼できる転送と信頼できない転送の違いについては、ssh マニュアルとssh_config マニュアルを参照してください。

  • 「X11転送要求が失敗しました」:サーバーの有効X11Forwarding値を確認し、xauthリモートホストにインストールされていることを確認し、制限的なMatchブロックまたはDisableForwarding設定を探してください。
  • DISPLAYリモートセッションでは空です。で切断して再接続しますssh -X。ローカルシェルでグラフィカルディスプレイが実行されていること、および接続が先ほど設定したサーバーに到達していることを確認してください。
  • ウィンドウに「ディスプレイを開けません」と表示されます。ローカルデスクトップセッションがアクティブであることを確認してください。デスクトップディスプレイにアクセスできないシェルでは、転送されたウィンドウを表示できません。
  • xclock見つかりません:テストプログラムが単純に存在しません。リモートマシンに既にインストールされているGUIアプリケーションを試してください。このメッセージだけでは、SSH転送が壊れていることを証明するものではありません。

X11フォワーディングは、時折リモートツールを使用する場合には便利ですが、頻繁に再描画を行うグラフィカルアプリケーションは、高遅延の接続環境では動作が遅く感じられることがあります。デスクトップ全体を使用する場合や、グラフィック処理を多用する作業の場合は、その用途向けに設計されたリモートデスクトップソリューションを使用してください。

コメントを残す

失われたパーティションとハードディスクデータを安全に復元する方法

失われたパーティションとハードディスクデータを安全に復元する方法

TestDiskとPhotoRecを使って、失われたパーティションやファイルを復元する方法を学びましょう。ソースドライブを保護し、安全にスキャンを行い、復元したデータを別のディスクに保存します。

LinuxデスクトップでQRコードをスキャンする方法

LinuxデスクトップでQRコードをスキャンする方法

CoBangを使えば、Webカメラまたは画像ファイルでLinux上でQRコードをスキャンできます。インストールオプション、セットアップ手順、Flatpakカメラへのアクセスに関する修正方法については、こちらをご覧ください。

Cameractrlsを使ってLinuxでウェブカメラの設定を変更する方法

Cameractrlsを使ってLinuxでウェブカメラの設定を変更する方法

Cameractrlsを使用してLinux上でウェブカメラの設定を変更しましょう。露出、色、フリッカー低減などのサポートされているコントロールを調整し、互換性のあるビデオモードを確認できます。

LinuxにPhpStormをインストールする方法:ツールボックス、Tar.gz、Snap、およびAUR

LinuxにPhpStormをインストールする方法:ツールボックス、Tar.gz、Snap、およびAUR

LinuxにPhpStormをインストールするには、JetBrains Toolboxを使用するか、スタンドアロンのtar.gzアーカイブを使用するか、SnapおよびArch AURオプションを選択してください。Javaは既にバンドルされています。

LinuxにCisco Packet Tracerをインストールする方法

LinuxにCisco Packet Tracerをインストールする方法

Cisco Packet Tracer 9.0.1 を Ubuntu 64 ビット版にダウンロードし、APT を使用して DEB パッケージをインストールし、ターミナルでライセンスに同意してサインインすると、ラボを開始できます。

LinuxでCD-ROMをISOイメージとしてバックアップする方法

LinuxでCD-ROMをISOイメージとしてバックアップする方法

Linux上でGNOME Disksまたはddコマンドを使用してCD-ROM ISOイメージを作成します。光学ドライブを識別し、コピーを監視し、イメージを検証し、破損したディスクやオーディオディスクに別のツールが必要な場合を把握できます。

XFCE 4でデュアルパネルを設定する方法

XFCE 4でデュアルパネルを設定する方法

各ディスプレイごとに個別のXFCE 4パネルを作成し、2番目のパネルを右側の出力に割り当て、位置とサイズを調整し、必要なランチャーとステータス項目を追加します。

LinuxでGIMPを使って画像を切り抜く方法

LinuxでGIMPを使って画像を切り抜く方法

LinuxでGIMPを使って写真の背景を削除する方法:被写体をトレースし、選択した背景を削除し、透明度を保持して、再利用可能なPNG形式でエクスポートします。

FlightGearを無料でダウンロード:公式インストールガイド

FlightGearを無料でダウンロード:公式インストールガイド

FlightGearは公式サイトから無料でダウンロードできます。Windows、macOS、Linuxの各パッケージを比較し、データファイルをインストールして、最初のフライトを開始しましょう。

OKSampler:キーボードビートのための無料かつシンプルな音楽サンプラー

OKSampler:キーボードビートのための無料かつシンプルな音楽サンプラー

OKSamplerはMP3クリップをキーボードのキーにマッピングし、音声をループ再生できます。この旧型フリーウェアの機能、旧機能が失われた箇所、ダウンロード前に確認すべき点について解説します。