Troubleshooting SSH connections with Reflection X

Reflection X の SSH 接続のトラブルシューティング
最終改訂日: 2011 年 3 月 31 日
注意:最新の情報は、まず、英語版の技術ノート 1814 (英語)で公開されます。英語版の最終改
訂日がこの版の最終改訂日よりも後である場合は、英語版に新しい情報が含まれている可能性が
あります。
適用対象
Reflection
Reflection
Reflection
Reflection
X 2011
Suite for X 2011
X Advantage
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
この技術ノートに記載されている作業を実行しても問題が解決しない場合は、ホストの管理者に
連絡してください。