Reflection X の SSH 接続のトラブルシューティング 最終改訂日 : 2011 年 3 月 31 日注意 : 最新の情報は まず 英語版の技術ノート 1814 ( 英語 ) で公開されます 英語版の最終改訂日がこの版の最終改訂日よりも後である場合は 英語版に新しい情報が含まれている可能性があります 適用対象 Reflection X 2011 Reflection Suite for X 2011 Reflection X Advantage Reflection X バージョン 14.x 概要この技術ノートでは Reflection X での Secure Shell による接続に関する問題をトラブル シューティングする方法について説明しています 以下の点に注意してください * Reflection 13.0 以降 SSH 接続は Secure Shell と呼ばれています これより古いバージョンの Reflection では SSH 接続は OpenSSH と呼ばれていました Reflection の Secure Shell の詳細については 技術ノート 1857 ( 英語 ) を参照してください * このドキュメントに記載されている一部の手順を実行するために ホストへの root アクセスと Linux/UNIX テキストエディタに関する十分な知識が必要になります 必要なアクセスまたは知識がない場合は システム管理者に支援を依頼してください * SSH トンネルに関する問題が発生する可能性があるため Reflection for Secure IT Windows クライアントと Reflection X を同じワークステーションにインストールしないでください Reflection X には Reflection for Secure IT Windows クライアントのすべての機能が含まれています SSH 接続と Reflection X について SSH 接続の使用時に X クライアントディスプレイの取得に関する問題が発生する場合は 可能性のある次の 3 つの要因について検討してください * ホストで X11Forwarding が有効になっているか * SSH サーバでディスプレイ変数が設定されているか *.Xauthority ファイルが読み取られているか (xauth プログラムが動作しているか ) Reflection X で SSH を使用するには X11 プロトコルが SSH トンネルを介して送信される必要があります この追加のプロセスにより 通常 Reflection X は X クライアントディスプレイの受信に失敗します また SSH を使用して X11 プロトコルをトンネルする場合 SSH サーバがディスプレイ変数を設定する必要があります SSH サーバがディスプレイ変数を設定するには SSH サーバと SSH クライアントの両方で X11Forwarding が有効になっている必要があります Reflection X での SSH の使用時に X クライアントディスプレイを取得できない場合は 問題のトラブルシューティングのために この技術ノートの手順を実行してください
Reflection ワークスペースまたは Reflection for UNIX and OpenVMS による SSH 接続のテスト Reflection ワークスペースまたは Reflection for UNIX and OpenVMS を使用して SSH サーバが動作し 正しく構成されていることを確認します この手順は Reflection のバージョンによって異なります Reflection ワークスペースの場合 : 1. [ スタート ] - [ プログラム ] - [Attachmate Reflection] - [Reflection ワークスペース ] - [VT 端末 ] - [ 作成 ] コマンドを選択します 2. [ 接続 ] で [Secure Shell] を選択し ホスト名または IP アドレスを入力します 3. [ その他の設定を構成する ] をクリックし [OK] をクリックします 4. [VT の設定 ] 画面の [ ホスト接続 ] で [ 接続セキュリティの設定 ] を選択します 5. [ トンネリング ] タブをクリックし [X11 トンネル接続を行う ] を有効にします 6. [OK] をクリックして設定を保存します 7. [OK] をクリックしてホストに接続します ホストに接続できない場合は ホストの管理者またはヘルプデスクに支援を依頼してください 8. ホストにログインして echo $DISPLAY コマンドを入力します 次に このコマンドの出力を トラブルシューティングの方法を決定するために示されている例のリストと比較します 注意 : セッションを再び使用する場合があるため この技術ノートに記載されている作業を実行している間は ログイン状態を維持してください 下記の ディスプレイ出力の解釈 のセクションに進んでください Reflection for UNIX and OpenVMS の場合 : 1. [ スタート ] - [ プログラム ] - [Attachmate Reflection] - [ ホスト - UNIX および OpenVMS] コマンドを選択します 2. [ 接続 ] - [ 接続の設定 ] コマンドをクリックします 3. [ ネットワーク ] オプションを選択し [SECURE SHELL] を選択します 4. ホスト名とユーザ名を入力し [ セキュリティ ] をクリックします 5. [ トンネリング ] タブをクリックし [X11 トンネル接続を行う ] を有効にします 6. [OK] をクリックし [ 接続 ] をクリックします ホストに接続できない場合は ホストの管理者またはヘルプデスクに支援を依頼してください 7. ホストにログインして echo $DISPLAY コマンドを入力します 次のセクションで このコマンドの出力を トラブルシューティングの方法を決定するために示されている例のリストと比較します
注意 : セッションを再び使用する場合があるため この技術ノートに記載されている作業を実行している間は ログイン状態を維持してください 次の ディスプレイ出力の解釈 のセクションに進んでください ディスプレイ出力の解釈手順 7 のディスプレイ出力を以下の情報と比較し 適切なトラブルシューティングセクションへのリンクを利用してください * 出力 : < なし > データが返されない場合は X11Forwarding が有効になっていない可能性があります X11Forwarding の有効化 のセクションを参照してください * 出力 : PC_IP:0.0 ディスプレイが SSH サーバのものとは異なる IP アドレスまたはマシン名に設定されている場合は SSH サーバで X11Forwarding が有効になっていない可能性があり ディスプレイが別の手段 ( コマンドライン入力 ログインスクリプトなど ) によって設定されています ディスプレイ変数のトラブルシューティング のセクションを参照してください * 出力 : hostname:0.0 ディスプレイがホスト名 ( または localhost) に設定されており ディスプレイ番号が 10 以上ではなく 0 に設定されている場合は SSH サーバにおいて X11Forwarding が高い確率で有効になっていますが コマンドライン入力またはログインスクリプトによってディスプレイ変数が壊れています ディスプレイ変数のトラブルシューティング のセクションを参照してください * 出力 : hostname:10.0 または localhost:11.0 ディスプレイがホスト名または localhost に設定されており 10 以上のディスプレイ番号が含まれている場合は X11Forwarding が高い確率で有効になっており ディスプレイ変数が高い確率で正しく設定されています.Xauthority および xauth のトラブルシューティング のセクションを参照してください X11Forwarding の有効化ホストで X11Forwarding を有効にするには SSH サーバ構成ファイルを見つけて編集し SSH サーバデーモンを停止して再起動する必要があります 構成ファイルの場所 X11Forwarding は SSH サーバ構成ファイルで構成されます 一般に この構成ファイルは sshd_config または sshd2_config という名前で /etc/ssh または /etc/ssh2 にあります これらの場所にファイルがない場合は find コマンドを使用してファイルを検索してください find / -name sshd_config 構成ファイルの参照および編集 SSH サーバ構成ファイルを見つけたら more コマンドを使用してファイルを参照し X11Forwarding が有効になっていることを確認します ファイルを参照するには コマンドプロンプトに次のコマンドを入力します
more sshd_config [Enter] キーを使用して X11Forwarding のキーワードが表示されるまでファイルをスクロールします ( このキーワードは製品によって異なる場合がありますが AllowX11Forwarding X11Forwarding などです ) このパラメータが no に設定されている場合は 以下の手順で機能を有効にしてください 1. ホストに root としてログインします 2. SSH サーバ構成ファイルをテキストエディタ (vi など ) で開きます 3. X11Forwarding のキーワードエントリ ( X11Forwarding no など ) を見つけます 4. X11Forwarding のキーワードエントリを編集して no を yes に変更します 注意 : この行がコメントアウトされている ( 前に # 記号が付いている ) 場合は # 記号を削除してください 5. ファイルを保存して テキストエディタを終了します デーモンの停止および再起動構成ファイルを修正したら SSH デーモンを停止して再起動します 以下の点に注意してください * SSH デーモンを停止および再起動しても アクティブな Secure Shell セッションは終了しません * デーモンを停止および再起動するために root としてログインしなければならない場合があります * SSH2 を使用している場合は コマンドの sshd を sshd2 に変更してください デーモンを停止して再起動するには 1. コマンドプロンプトに ps -eaf grep sshd と入力して SSH デーモンのプロセス ID (PID) を確認します PID をメモしておきます 2. kill -HUP <PID 番号 > と入力して SSH デーモンを停止および再起動します 注意 :<PID 番号 > は 手順 1 で取得したプロセス ID 番号に置き換えてください 3. ps -eaf grep sshd と入力してデーモンが再起動していることを確認します SSH デーモンの PID が手順 1 の PID とは異なったものになり X11Forwarding が有効になります 4. ログオフします ディスプレイ変数のトラブルシューティング X11Forwarding を有効にして SSH を使用する場合は SSH サーバがディスプレイ変数の設定を担当します 多数の X ユーザが ( 一般に -display スイッチを使用して ホストのコマンドスクリプトから手動で またはログインスクリプト内から ) ディスプレイ変数を PC_IP:0.0 などに設定しますが SSH を使用する場合は これを禁止してください
注意 : ディスプレイ変数を別の手段で設定しないことは非常に重要です 別の手段で設定すると SSH サーバによって割り当てられたディスプレイ変数が壊れたり 場合によっては X クライアントディスプレイが安全ではない方法で SSH トンネルの外部に送信されることを可能にするものに置き換えられることもあります ( Reflection ワークスペースまたは Reflection for UNIX and OpenVMS による SSH 接続のテスト のセクションの ) ディスプレイ出力が PC_IP:0.0 または hostname:0.0 のようなものである場合は ディスプレイ変数が ( 少なくとも部分的に ) SSH サーバ以外の手段によって設定されています ディスプレイ変数を編集するすべてのコマンドを削除して 再度テストしてください この手順を実行して ディスプレイ出力がなくなった場合は X11Forwarding の有効化 のセクションを参照してください Reflection X の既定のテンプレート Reflection X for UNIX ホストの既定のテンプレートには -display パラメータが含まれています 接続方法として Secure Shell が選択されている場合は このパラメータが無視され ホストに送信されません 他の方法によって このコマンドでディスプレイ変数が設定される場合は 無視されないため 削除する必要があります 例えば 次のコマンドが Secure Shell の方式とともに使用されると仮定します (/usr/openwin/bin/xterm -fn 6x13 -sb -ls -display %IP#% -name %T% &) ホストに送信されるコマンドは 次のように編集されます (/usr/openwin/bin/xterm -fn 6x13 -sb -ls -name %T% &) しかし 代わりに次のコマンドが使用されると仮定します DISPLAY=%IP#%;export DISPLAY;(/usr/openwin/bin/xterm -name %T% &) この場合は コマンド全体がホストに送信されます Secure Shell を使用する場合は このコマンドを次のようなものに編集してください (/usr/openwin/bin/xterm -fn 6x13 -sb -ls -name %T% &) このコマンドを実行した後にディスプレイ出力がない場合は X11Forwarding の有効化 のセクションを参照してください 注意 :Reflection X バージョン 13.x ~ 14.x を使用している場合は [ 設定 ] - [ ネットワーク ] コマンドをクリックし [ リモート TCP/IP 接続を使用不可 ] チェックボックスをオンにして [OK] をクリックすることにより すべてのリモート接続を禁止することができます このチェックボックスをオンにすると Secure Shell 以外のすべての接続方式が無効になり 最高度のセキュリティが実現されます.Xauthority および xauth のトラブルシューティング ( Reflection ワークスペースまたは Reflection for UNIX and OpenVMS による SSH 接続のテスト のセクションの ) ディスプレイ出力が hostname:10.0 または localhost:11.0 のようなものであっても X クライアントを表示できない場合は 問題の原因が.Xauthority ファイルまたは xauth プログラムである可能性があります.Xauthority ファイルに関する問題 UNIX ホストで動作し X11Forwarding が有効になっている場合の各接続試行時に SSH サーバによって呼び出される xauth プログラムが ユーザの.Xauthority ファイルを作成または編集したり このファイルにアクセスしたりすることができなくなっています テストするには 以下の手順を実行してください
1.Reflection X が動作し ディスプレイ 0 ( 既定値 ) で構成されていることを確認します 0 以外のディスプレイが使用されている場合 この値を 0 に変更できないときは Attachmate の技術サポートに連絡してください Reflection X 13 ~ 14.x では [ 設定 ] - [ 表示 ] コマンドをクリックします Reflection X Advantage では セッションを起動し 次の図に示す [ セッションの定義 ] 画面の [ クライアントコネクタ ] を調べます 2. Reflection for UNIX and OpenVMS による既存のホスト接続から ホストで xterm を起動するコマンドを入力します 例えば Solaris で次のコマンドを入力します /usr/openwin/bin/xterm & ユーザの.Xauthority ファイルにアクセスする xauth プログラムに関する問題が存在すると 多くの場合 次のようなメッセージが表示されます X connection to hostname:10.0 broken (explicit kill or server shutdown) または xauth: timeout in locking authority file /home/< アカウント名 > このような問題については 次のような原因が考えられます *.Xauthority ファイルまたはホームディレクトリに関して 十分な権限がない *.Xauthority ファイルまたはホームディレクトリの所有権が正しくない * アカウントのホームディレクトリが設定されていない *.Xauthority ファイルが壊れている * su コマンドが使用された ( この場合 新しいアカウントが 元のアカウントのホームディレクトリにある必要な.Xauthority ファイルにアクセスできない可能性があります ) * UNIX サーバで他のプロセスによってファイルがロックされている システム管理者との共同作業によってこれらの問題を解決し X アプリケーションの起動を再試行してください
xauth プログラムが動作しない SSH サーバによって呼び出されるときに xauth プログラムが検出または実行されなくなっています 検出されないときは 多くの場合 そのパスを設定するために使用できる SSH サーバ構成キーワードが存在します この問題は 当該の UNIX ホストへの接続を試みるすべてのユーザに影響します SSH を使用して接続する場合に どのユーザも当該の UNIX ホストから X クライアントを起動できないものの 正しいディスプレイ変数と思われるものにユーザが接続して表示できる場合は UNIX ホストの管理者に支援を依頼してください この技術ノートに記載されている作業を実行しても問題が解決しない場合は ホストの管理者に連絡してください ライブラリの競合 SSH サーバが X11 転送をローカルネットワークアダプタにバインドする方法によっては 古い X ライブラリ (X11R5 など ) にリンクしている X アプリケーションで障害が発生する場合があります この問題が発生すると 次のようなメッセージが表示されます X connection to hostname:10.0 broken (explicit kill or server shutdown). または 次のような一連のエラーメッセージがデバッグログに記録される場合があります X11 connection uses different authentication protocol. X11 connection rejected because of wrong authentication. X11 rejected 1 i0/o0 この問題は 次の 2 つの方法のいずれかで解決できます * X11R6 ライブラリにリンクしている X クライアントを使用する または * SSH サーバ構成ファイルで X11UseLocalHost というキーワードを探して 存在したら 値を yes から no に変更して SSH サーバを再起動する 例特定の X アプリケーションがリンクしているライブラリを識別するために chatr などのコマンドを使用することができます 以下の例は HPUX 11.23 の場合です hpterm をトンネルできず explicit kill メッセージが表示されると仮定します chatr コマンドを実行して リンクしているライブラリを調べます chatr /usr/bin/x11/hpterm 次の文字列は X11R5 ライブラリを示している出力の一部分です /view/x_r6hppa_1123/vobs/swdev/pvt/r5hppa_hpterm_1123/x11r5/lib/libxhp11.1 同じ Hewlett Packard ホストで xterm が正しく表示されると仮定します chatr コマンドを実行して リンクしているライブラリを調べます chatr /usr/bin/x11/xterm 次の文字列は X11R6 ライブラリを示している出力の一部分です /view/x_r6hppa_1123/vobs/swdev/pvt/r6hppa_1123/x11r6/lib/libxt.3 この技術ノートに記載されている作業を実行しても問題が解決しない場合は ホストの管理者に連絡してください