17.2. リモートによる接続および切断

代わりとなる、リモートコンテナーへの接続方法は 2 つあります。Red Hat Fuse コマンドシェルをすでに実行している場合は、コンソールコマンドを呼び出してリモートコンテナーに接続できます。また、コマンドラインでユーティリティーを直接実行して、リモートコンテナーに接続できます。

17.2.1. リモートコンテナーからのスタンドアロンコンテナーへの接続

17.2.1.1. 概要

リモートコンテナーにアクセスするには、任意のコンテナーのコマンドコンソールを使用できます。SSH を使用すると、ローカルコンテナーのコンソールはリモートコンテナーに接続し、リモートコンテナーのコマンドコンソールとして機能します。

17.2.1.2. ssh:ssh コンソールコマンドの使用

ssh:ssh コンソールを使用して、リモートコンテナーのコンソールに接続します。

ssh:ssh コマンド構文

ssh:ssh -l username -P password -p port hostname

-l
リモートコンテナーへの接続に使用されるユーザー名。admin 権限を持つ有効な JAAS ログインクレデンシャルを使用します。
-P
リモートコンテナーへの接続に使用するパスワード。
-p
必要なコンテナーのリモートコンソールへのアクセスに使用される SSH ポート。デフォルト値は 8101 です。ポート番号の変更に関する詳細は、「リモートアクセスのためのスタンドアロンコンテナーの設定」 を参照してください。
hostname
リモートコンテナーが実行されているマシンのホスト名。ホスト名の変更に関する詳細は、「リモートアクセスのためのスタンドアロンコンテナーの設定」 を参照してください。
警告

etc/users.properties ファイルでユーザー名とパスワードをカスタマイズすることが推奨されます。

注記

リモートコンテナーが Oracle VM Server for SPARC インスタンスにデプロイされている場合は、デフォルトの SSH ポート値 8101 はすでに論理ドメインマネージャーデーモンによって使用されている可能性が高くなります。この場合、「リモートアクセスのためのスタンドアロンコンテナーの設定」 の説明に従って、コンテナーの SSH ポートを再設定する必要があります。

正しいコンテナーに接続していることを確認するには、Karaf コンソールプロンプトで shell:info を入力します。これにより、現在接続されているインスタンスに関する情報が返されます。

17.2.1.3. リモートコンソールからの切断

リモートコンソールから切断するには、logout を入力するか、プロンプトで Ctrl+D を押します。

リモートコンテナーから切断され、コンソールが再びローカルコンテナーを管理するようになります。

17.2.2. クライアントコマンドラインユーティリティーを使用したコンテナーへの接続

17.2.2.1. リモートクライアントの使用

リモートクライアントを使用すると、完全な Fuse コンテナーをローカルで起動せずに、リモート Red Hat Fuse コンテナーへセキュアに接続できます。

たとえば、同じマシンでサーバーモードで実行されている Fuse インスタンスに即座に接続するには、コマンドプロンプトを開いて、client[.bat] スクリプトを実行します (InstallDir/bin ディレクトリー内にあります)。

client

通常は、リモートインスタンスに接続するためのホスト名、ポート、ユーザー名、およびパスワードを指定します。テストスイートなど、大規模なスクリプト内でクライアントを使用している場合は、以下のようにコンソールコマンドを追加できます。

client -a 8101 -h hostname -u username -p password shell:info

または、-p オプションを省略した場合は、パスワードの入力を求められます。

スタンドアロンコンテナーの場合は、admin 権限を持つ有効な JAAS ユーザークレデンシャルを使用します。

クライアントで使用できるオプションを表示するには、以下を入力します。

client --help

Karaf クライアントのヘルプ

Apache Felix Karaf client
  -a [port]     specify the port to connect to
  -h [host]     specify the host to connect to
  -u [user]     specify the user name
  -p [password] specify the password
  --help        shows this help message
  -v            raise verbosity
  -r [attempts] retry connection establishment (up to attempts times)
  -d [delay]    intra-retry delay (defaults to 2 seconds)
  [commands]    commands to run
If no commands are specified, the client will be put in an interactive mode

17.2.2.2. リモートクライアントのデフォルトの認証情報

クレデンシャルを指定しなくても、bin/client を使用して Karaf コンテナーにログインできることに驚くかもしれません。これは、リモートクライアントプログラムがデフォルトの認証情報を使用するように事前設定されているためです。認証情報を指定しないと、リモートクライアントは以下のデフォルト認証情報を (順番に) 自動的に使用するように試みます。

  • デフォルトの SSH キー: デフォルトの Apache Karaf SSH キー を使用してログインしようとします。このログインが正常に行われるようにする設定エントリーは、etc/keys.properties ファイルでデフォルトでコメントアウトされています。
  • デフォルトのユーザー名/パスワードクレデンシャル - ユーザー名とパスワードの組み合わせ admin/admin を使用してログインを試みます。このログインが正常に行われるようにする設定エントリーは、etc/users.properties ファイルでデフォルトでコメントアウトされています。

そのため、users.properties でデフォルトの admin/admin クレデンシャルをアンコメントして、Karaf コンテナーに新しいユーザーを作成する場合は、クレデンシャルを指定せずに bin/client ユーティリティーがログインできます。

重要

セキュリティー上の理由から、Karaf コンテナーの初回インストール時に (コメントアウトして)Fuse のデフォルトのクレデンシャルが無効になっています。ただし、デフォルトのパスワードや SSH 公開鍵を変更 せず にこれらのデフォルトの認証情報をアンコメントすると、Karaf コンテナーに、セキュリティーホールが発生します。実稼働環境では、これは実行しないでください。クレデンシャルを提供せずに bin/client を使用してコンテナーにログインできる場合、コンテナーには安全ではないため、実稼働環境で修正手順を実行する必要があります。

17.2.2.3. リモートクライアントコンソールからの切断

リモートクライアントを使用してリモートコンソールを開き、このコマンドを渡すのではなく、リモートクライアントを使用してリモートコンソールを切断する必要があります。リモートクライアントのコンソールから切断するには、logout を入力するか、プロンプトで Ctrl-D を押します。

クライアントは切断され、終了します。

17.2.3. SSH コマンドラインユーティリティーを使用したコンテナーへの接続

17.2.3.1. 概要

また、ssh コマンドラインユーティリティー (UNIX 系オペレーティングシステムで標準のユーティリティー) を使用して Red Hat Fuse コンテナーにログインすることもできます。この認証メカニズムは、公開鍵の暗号化に基づいています (最初にコンテナーにインストールする必要があります)。たとえば、コンテナーが TCP ポート 8101 をリッスンするように設定されている場合には、以下のようにログインします。

ssh -p 8101 jdoe@localhost
重要

キーベースのログインは現在スタンドアロンコンテナーでのみサポートされ、Fabric コンテナーでは対応していません。

17.2.3.2. 前提条件

キーベースの SSH ログインを使用するには、以下の前提条件を満たす必要があります。

17.2.3.3. デフォルトキーの場所

ssh コマンドは、デフォルトのキーの場所で秘密鍵を自動的に検索します。場所を明示的に指定する必要がなくなるので、鍵をデフォルトの場所にインストールすることが推奨されます。

*NIX オペレーティングシステムでは、RSA キーペアのデフォルトの場所は以下のようになります。

~/.ssh/id_rsa
~/.ssh/id_rsa.pub

Windows オペレーティングシステムでは、RSA キーペアのデフォルトの場所は次のとおりです。

C:\Documents and Settings\Username\.ssh\id_rsa
C:\Documents and Settings\Username\.ssh\id_rsa.pub
注記

Red Hat Fuse は RSA キーのみをサポートします。DSA キーは機能し ません

17.2.3.4. 新しい SSH キーペアの作成

ssh-keygen ユーティリティーを使用して RSA 鍵ペアを生成します。新しいコマンドプロンプトを開き、以下のコマンドを入力します。

ssh-keygen -t rsa -b 2048

上記のコマンドは、鍵の長さ 2048 ビットを使用して RSA 鍵を生成します。次に、キーペアのファイル名を指定するように求められます。

Generating public/private rsa key pair.
Enter file in which to save the key (/Users/Username/.ssh/id_rsa):

return を入力して、デフォルトの場所にあるキーペアを保存します。次に、パスフレーズの入力を求めるプロンプトが出されます。

Enter passphrase (empty for no passphrase):

必要に応じて、パスフレーズを入力するか、または 2 回入力してパスフレーズなしを選択できます。

注記

Fabric コンソールコマンドの実行に同じキーペアを使用する場合は、Fabric が暗号化された秘密鍵の使用をサポートしていないため、パススルーのフレーズ を選択しないことが推奨されます。

17.2.3.5. コンテナーへの SSH 公開鍵のインストール

Red Hat Fuse コンテナーにログインするときに SSH キーペアを使用するには、INSTALL_DIR/etc/keys.properties ファイルに新しいユーザーエントリーを作成し、コンテナーに SSH 公開鍵をインストールする必要があります。このファイルの各ユーザーエントリーは、以下の形式 1 行に表示されます。

Username=PublicKey,Role1,Role2,...

たとえば、公開鍵ファイル ~/.ssh/id_rsa.pub に以下の内容があるとします。

ssh-rsa AAAAB3NzaC1kc3MAAACBAP1/U4EddRIpUt9KnC7s5Of2EbdSPO9EAMMeP4C2USZpRV1AIlH7WT2NWPq/xfW6MPbLm1Vs14E7
gB00b/JmYLdrmVClpJ+f6AR7ECLCT7up1/63xhv4O1fnfqimFQ8E+4P208UewwI1VBNaFpEy9nXzrith1yrv8iIDGZ3RSAHHAAAAFQCX
YFCPFSMLzLKSuYKi64QL8Fgc9QAAAnEA9+GghdabPd7LvKtcNrhXuXmUr7v6OuqC+VdMCz0HgmdRWVeOutRZT+ZxBxCBgLRJFnEj6Ewo
FhO3zwkyjMim4TwWeotifI0o4KOuHiuzpnWRbqN/C/ohNWLx+2J6ASQ7zKTxvqhRkImog9/hWuWfBpKLZl6Ae1UlZAFMO/7PSSoAAACB
AKKSU2PFl/qOLxIwmBZPPIcJshVe7bVUpFvyl3BbJDow8rXfskl8wO63OzP/qLmcJM0+JbcRU/53Jj7uyk31drV2qxhIOsLDC9dGCWj4
7Y7TyhPdXh/0dthTRBy6bqGtRPxGa7gJov1xm/UuYYXPIUR/3x9MAZvZ5xvE0kYXO+rx jdoe@doemachine.local

以下のエントリーを 1 行で InstallDir/etc/keys.properties ファイルに追加することで、admin ロールで jdoe ユーザーを作成できます。

jdoe=AAAAB3NzaC1kc3MAAACBAP1/U4EddRIpUt9KnC7s5Of2EbdSPO9EAMMeP4C2USZpRV1AIlH7WT2NWPq/xfW6MPbLm1Vs14E7
gB00b/JmYLdrmVClpJ+f6AR7ECLCT7up1/63xhv4O1fnfqimFQ8E+4P208UewwI1VBNaFpEy9nXzrith1yrv8iIDGZ3RSAHHAAAAFQCX
YFCPFSMLzLKSuYKi64QL8Fgc9QAAAnEA9+GghdabPd7LvKtcNrhXuXmUr7v6OuqC+VdMCz0HgmdRWVeOutRZT+ZxBxCBgLRJFnEj6Ewo
FhO3zwkyjMim4TwWeotifI0o4KOuHiuzpnWRbqN/C/ohNWLx+2J6ASQ7zKTxvqhRkImog9/hWuWfBpKLZl6Ae1UlZAFMO/7PSSoAAACB
AKKSU2PFl/qOLxIwmBZPPIcJshVe7bVUpFvyl3BbJDow8rXfskl8wO63OzP/qLmcJM0+JbcRU/53Jj7uyk31drV2qxhIOsLDC9dGCWj4
7Y7TyhPdXh/0dthTRBy6bqGtRPxGa7gJov1xm/UuYYXPIUR/3x9MAZvZ5xvE0kYXO+rx,admin
重要

ここで、id_rsa.pub ファイルの内容をすべて挿入しないでください。公開鍵自体を表す記号のブロックだけを挿入します。

17.2.3.6. 公開鍵認証がサポートされていることの確認

コンテナーの起動後、以下のように jaas:realms コンソールコマンドを実行して、公開鍵認証がサポートされているかどうかを確認できます。

karaf@root()> jaas:realms
Index │ Realm Name │ Login Module Class Name
──────┼────────────┼─────────────────────────────────────────────────────-
1 │ karaf │ org.apache.karaf.jaas.modules.properties.PropertiesLoginModule
2 │ karaf │ org.apache.karaf.jaas.modules.publickey.PublickeyLoginModule
3 │ karaf │ org.apache.karaf.jaas.modules.audit.FileAuditLoginModule
4 │ karaf │ org.apache.karaf.jaas.modules.audit.LogAuditLoginModule
5 │ karaf │ org.apache.karaf.jaas.modules.audit.EventAdminAuditLoginModule
karaf@root()>

PublickeyLoginModule がインストールされていることを確認する必要があります。この設定では、ユーザー名/パスワード認証情報または公開鍵の認証情報のいずれかを使用してコンテナーにログインできます。

17.2.3.7. ssh ロールの etc/keys.properties への追加

次の例に示すように、etc/keys.properties で定義されている admingroup には、ssh ロールが含まれている必要があります。

#
# For security reason, the default auto-signed key is disabled.
# The user guide describes how to generate/update the key.
#
#karaf=AAAAB3NzaC1kc3MAAACBAP1/U4EddRIpUt9KnC7s5Of2EbdSPO9EAMMeP4C2USZpRV1AIlH7WT2NWPq/xfW6MPbLm1Vs14E7gB00b/JmYLdrmVClpJ+f6AR7ECLCT7up1/63xhv4O1fnxqimFQ8E+4P208UewwI1VBNaFpEy9nXzrith1yrv8iIDGZ3RSAHHAAAAFQCXYFCPFSMLzLKSuYKi64QL8Fgc9QAAAIEA9+GghdabPd7LvKtcNrhXuXmUr7v6OuqC+VdMCz0HgmdRWVeOutRZT+ZxBxCBgLRJFnEj6EwoFhO3zwkyjMim4TwWeotUfI0o4KOuHiuzpnWRbqN/C/ohNWLx+2J6ASQ7zKTxvqhRkImog9/hWuWfBpKLZl6Ae1UlZAFMO/7PSSoAAACBAKKSU2PFl/qOLxIwmBZPPIcJshVe7bVUpFvyl3BbJDow8rXfskl8wO63OzP/qLmcJM0+JbcRU/53JjTuyk31drV2qxhIOsLDC9dGCWj47Y7TyhPdXh/0dthTRBy6bqGtRPxGa7gJov1xm/UuYYXPIUR/3x9MAZvZ5xvE0kYXO+rx,_g_:admingroup
_g_\:admingroup = group,admin,manager,viewer,systembundles,ssh

ssh ロールが admingroup の定義に含まれていない場合は、etc/keys.properties を編集して、ssh ロールを追加する必要があります。

17.2.3.8. キーベースの SSH を使用したログイン

キーベースの SSH ユーティリティーを使用してコンテナーにログインする準備が整いました。以下に例を示します。

$ ssh -p 8101 jdoe@localhost
____          _   _   _       _     _____
|  _ \ ___  __| | | | | | __ _| |_  |  ___|   _ ___  ___
| |_) / _ \/ _` | | |_| |/ _` | __| | |_ | | | / __|/ _ \
|  _ <  __/ (_| | |  _  | (_| | |_  |  _|| |_| \__ \  __/
|_| \_\___|\__,_| |_| |_|\__,_|\__| |_|   \__,_|___/___|

  Fuse (7.x.x.fuse-xxxxxx-redhat-xxxxx)
  http://www.redhat.com/products/jbossenterprisemiddleware/fuse/

Hit '<tab>' for a list of available commands
and '[cmd] --help' for help on a specific command.

Open a browser to http://localhost:8181/hawtio to access the management console

Hit '<ctrl-d>' or 'shutdown' to shutdown Red Hat Fuse.

karaf@root()>
注記

暗号化された秘密鍵を使用している場合は、ssh ユーティリティーにより、パスフレーズの入力が求められます。