Jump to contentJump to page navigation: previous page [access key p]/next page [access key n]
適用先 SUSE Linux Enterprise High Availability Extension 12 SP5

D rootアクセスなしでのクラスタレポートの実行

すべてのクラスタノードはSSHによって互いにアクセスできる必要があります。crm report (トラブルシューティング用)などのツールおよびHawk2の履歴エクスプローラは、ノード間でパスワード不要のSSHアクセスを必要とします。それがない場合、現在のノードからしかデータを収集できません。

パスワード不要のSSH rootアクセスが規定要件を順守しない場合は、次善策を使用してクラスタレポートを実行できます。これは次の基本手順で構成されます。

  1. 専用のローカルユーザアカウント(crm report実行用)を作成する。

  2. できれば標準以外のSSHポートを使用して、そのユーザアカウントにパスワード不要のSSHアクセスを設定する。

  3. そのユーザにsudoを設定する。

  4. そのユーザとしてcrm reportを実行する。

デフォルトでは、crm reportを実行すると、まずrootとしてリモートノードへのログインを試行し、続いてユーザhaclusterとしてログインを試行します。ただし、ローカルセキュリティポリシーによってSSHを使用したrootログインが禁止されている場合、スクリプトの実行はすべてのリモートノードで失敗します。ユーザhaclusterとしてスクリプトを実行しようとしても失敗します。これはサービスアカウントであり、そのシェルはログインが禁止されている/bin/falseに設定されているためです。High Availabilityクラスタのすべてのノードでcrm reportスクリプトを正常に実行する唯一のオプションは、専用のローカルユーザを作成することだけです。

D.1 ローカルユーザアカウントの作成

次の例では、コマンドラインからhareportという名前のローカルユーザを作成します。パスワードは、セキュリティ要件を満たしていれば何でも構いません。または、YaSTでユーザアカウントを作成してパスワードを設定することもできます。

手順 D.1: クラスタレポート実行用の専用ローカルユーザアカウントの作成
  1. シェルを起動し、ホームディレクトリ/home/hareportを持つユーザhareportを作成します。

    root # useradd -m -d /home/hareport -c "HA Report" hareport
  2. ユーザのパスワードを設定します。

    root # passwd hareport
  3. プロンプトが表示されたら、ユーザのパスワードを入力し、確認のために再度入力します。

重要
重要: 各クラスタノードで同じユーザが必要

すべてのノードで同じユーザアカウントを作成するため、各ノードで上の手順を繰り返してください。

D.2 パスワード不要のSSHアカウントの設定

手順 D.2: SSHデーモンに対する非標準ポートの設定

デフォルトでは、SSHデーモンおよびSSHクライアントはポート22で通信およびリスンします。ネットワークセキュリティガイドラインによって、デフォルトのSSHポートを大きい番号の別のポートに変更することが要求されている場合は、デーモンの設定ファイル/etc/ssh/sshd_configを変更する必要があります。

  1. デフォルトポートを変更するには、ファイルでPort行を検索してコメント解除し、目的に応じて編集します。たとえば、次のように設定します。

    Port 5022
  2. 組織においてrootユーザが他のサーバにアクセスすることが許可されていない場合、このファイルでPermitRootLoginエントリを検索してコメント解除し、noに設定します。

    PermitRootLogin no
  3. または、次のコマンドを実行して、各行をファイルの末尾に追加します。

    root # echo “PermitRootLogin no” >> /etc/ssh/sshd_config
    root # echo “Port 5022” >> /etc/ssh/sshd_config
  4. /etc/ssh/sshd_configを変更したら、SSHデーモンを再起動して新しい設定を有効にします。

    root # systemctl restart sshd
重要
重要: 各クラスタノードで同じ設定が必要

各クラスタノードで、このSSHデーモンの設定を繰り返してください。

手順 D.3: SSHクライアントに対する非標準ポートの設定

クラスタ内のすべてのノードでSSHポートを変更する場合、SSH設定ファイル/etc/ssh/sshd_configを変更するのが便利です。

  1. デフォルトポートを変更するには、ファイルでPort行を検索してコメント解除し、目的に応じて編集します。たとえば、次のように設定します。

    Port 5022
  2. または、次のコマンドを実行して、各行をファイルの末尾に追加します。

    root # echo “Port 5022” >> /etc/ssh/ssh_config
注記
注記: 1つのノードでのみ設定が必要

このSSHクライアントの設定は、クラスタレポートを実行するノードでのみ必要です。

または、-Xオプションを使用してカスタムSSHポートでcrm reportを実行することも、crm reportがデフォルトでカスタムSSHポートを使用するように設定することもできます。詳細については、手順D.5「カスタムSSHポートを使用したクラスタレポートの生成」を参照してください。

手順 D.4: 共有SSH鍵の作成

パスワードを要求されずに、SSHを使用して他のサーバにアクセスできます。これは一見、安全ではないように見えますが、ユーザは自身の公開鍵が共有されているサーバにしかアクセスできないため、実際は非常に安全なアクセス方法です。共有鍵は、その鍵を使用するユーザとして作成する必要があります。

  1. クラスタレポートの実行用に作成したユーザアカウントでノードの1つにログインします(上の例では、このユーザアカウントはhareportです)。

  2. 新しい鍵を生成します。

    hareport > ssh-keygen –t rsa

    このコマンドは、デフォルトで2,048ビットの鍵を生成します。鍵のデフォルトの場所は~/.ssh/です。鍵にパスフレーズを設定するよう求められます。ただし、パスワードなしでログインする場合は、鍵にパスフレーズがあってはならないため、パスフレーズを入力しないでください。

  3. 鍵が生成されたら、公開鍵を他の「それぞれの」ノードにコピーします(鍵を作成したノードを「含む」)。

    hareport > ssh-copy-id -i ~/.ssh/id_rsa.pub HOSTNAME_OR_IP

    このコマンドでは、各サーバのDNS名、エイリアス、またはIPアドレスを使用できます。コピー中に、各ノードのホスト鍵を受諾するよう求められるので、hareportユーザアカウントのパスワードを入力する必要があります(パスワードを入力する必要があるのは、ここだけです)。

  4. 鍵をすべてのクラスタノードと共有したら、パスワード不要のSSHを使用して、ユーザhareportとして他のノードにログインできるかどうかをテストします。

    hareport > ssh HOSTNAME_OR_IP

    証明書の受諾やパスワードの入力を要求されることなく、自動的にリモートサーバに接続されます。

注記
注記: 1つのノードでのみ設定が必要

毎回同じノードからクラスタレポートを実行する場合は、上の手順は、このノードでのみ実行すれば十分です。そうでない場合は、各ノードでこの手順を繰り返します。

D.3 sudoの設定

sudoコマンドは、通常のユーザを素早くrootにしてコマンドを発行できるようにします。パスワードの入力は、必要な場合と不要な場合があります。すべてのルートレベルのコマンドにsudoアクセスを付与することも、特定のコマンドにのみ付与することもできます。一般的には、sudoはエイリアスを使用してコマンド文字列全体を定義します。

sudoを設定するには、visudo (viでは「ありません」)またはYaSTを使用します。

警告
警告: viは使用しない

コマンドラインからsudoを設定するには、visudoを使用して、rootとしてsudoersファイルを編集する必要があります。他のエディタを使用すると、構文エラーやファイルパーミッションエラーが発生し、sudoを実行できないことがあります。

  1. rootとしてログインします。

  2. /etc/sudoersファイルを開くため、「visudo」と入力します。

  3. カテゴリHost alias specificationUser alias specificationCmnd alias specification、およびRunas alias specificationを探します。

  4. 次のエントリを/etc/sudoers内のそれぞれのカテゴリに追加します。

    Host_Alias	CLUSTER = alice,bob,charlie 1
    User_Alias HA = hareport 2
    Cmnd_Alias HA_ALLOWED = /bin/su, /usr/sbin/crm report *3
    Runas_Alias R = root 4

    1

    ホストエイリアスは、sudoユーザがコマンド発行権利を持つサーバ(またはサーバの範囲)を定義します。ホストエイリアスでは、DNS名またはIPアドレスを使用するか、ネットワーク範囲全体を指定できます(例: 172.17.12.0/24)。アクセスの範囲を制限するには、クラスタノードのホスト名のみを指定する必要があります。

    2

    ユーザエイリアスでは、複数のローカルユーザアカウントを1つのエイリアスに追加できます。ただし、この場合、使用するアカウントは1つだけであるため、エイリアスの作成を避けることができます。上の例では、クラスタレポート実行用に作成したhareportユーザを追加しています。

    3

    コマンドエイリアスは、ユーザが実行できるコマンドを定義します。これは、非ルートユーザがsudoを使用する際にアクセスできるコマンドを制限する場合に便利です。この場合、hareportユーザアカウントには、コマンドcrm report およびsuに対するアクセスが必要です。

    4

    runasエイリアスは、コマンドの実行に使用するアカウントを指定します。この場合は、rootです。

  5. 次の2行を検索します。

    Defaults targetpw
    ALL     ALL=(ALL) ALL

    これらは、作成したい設定と衝突するため、無効にします。

    #Defaults targetpw
    #ALL     ALL=(ALL) ALL
  6. User privilege specificationを探します。

  7. 上のエイリアスを定義したら、そこに次のルールを追加できます。

    HA	CLUSTER = (R) NOPASSWD:HA_ALLOWED

    NOPASSWORDオプションは、ユーザhareportがパスワードを入力せずにクラスタレポートを実行できるようにします。

重要
重要: 各クラスタノードで同じsudo設定が必要

クラスタ内のすべてのノードでこのsudo設定を行う必要があります。sudoに他の変更は必要なく、再起動が必要なサービスもありません。

D.4 クラスタレポートの生成

上で行った設定でクラスタレポートを実行するには、ノードの1つにユーザhareportとしてログインする必要があります。クラスタレポートを起動するには、crm reportコマンドを使用します。次に例を示します。

root # crm report -f 0:00 -n "alice bob charlie"

このコマンドは、指定したノード上の午前0時以降の情報をすべて抽出し、現在のディレクトリにpcmk-DATE.tar.bz2という名前の*.tar.bz2アーカイブを作成します。

手順 D.5: カスタムSSHポートを使用したクラスタレポートの生成
  1. カスタムSSHポートを使用する場合、crm report-Xを使用して、クライアントのSSHポートを変更します。たとえば、カスタムSSHポートが5022の場合、次のコマンドを使用します。

    root # crm report -X "-p 5022" [...]
  2. crm reportのカスタムSSHポートを永続的に設定するには、crm対話型シェルを開始します。

    crm options
  3. 次のように入力します。

    crm(live)options#  set core.report_tool_options "-X -oPort=5022"
このページを印刷