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 ログインを使用するには、以下の前提条件を満たす必要があります。
-
このコンテナーは
PublickeyLoginModule
がインストールされているスタンドアロン (Fabric はサポートされません) である必要があります。 - SSH キーペアを作成しておく必要があります (「新しい SSH キーペアの作成」 参照)
- SSH キーペアからの公開鍵をコンテナーにインストールする必要があります (「コンテナーへの 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
ユーティリティーにより、パスフレーズの入力が求められます。