root
アクセスなしでのクラスタレポートの実行 #
すべてのクラスタノードはSSHによって互いにアクセスできる必要があります。crm report
(トラブルシューティング用)などのツールおよびHawk2の は、ノード間でパスワード不要のSSHアクセスを必要とします。それがない場合、現在のノードからしかデータを収集できません。
パスワード不要のSSH root
アクセスが規定要件を順守しない場合は、次善策を使用してクラスタレポートを実行できます。これは次の基本手順で構成されます。
専用のローカルユーザアカウント(crm report
実行用)を作成する。
できれば標準以外のSSHポートを使用して、そのユーザアカウントにパスワード不要のSSHアクセスを設定する。
そのユーザにsudo
を設定する。
そのユーザとしてcrm report
を実行する。
デフォルトでは、crm report
を実行すると、まずroot
としてリモートノードへのログインを試行し、続いてユーザhacluster
としてログインを試行します。ただし、ローカルセキュリティポリシーによってSSHを使用したroot
ログインが禁止されている場合、スクリプトの実行はすべてのリモートノードで失敗します。ユーザhacluster
としてスクリプトを実行しようとしても失敗します。これはサービスアカウントであり、そのシェルはログインが禁止されている/bin/false
に設定されているためです。High Availabilityクラスタのすべてのノードでcrm report
スクリプトを正常に実行する唯一のオプションは、専用のローカルユーザを作成することだけです。
次の例では、コマンドラインからhareport
という名前のローカルユーザを作成します。パスワードは、セキュリティ要件を満たしていれば何でも構いません。または、YaSTでユーザアカウントを作成してパスワードを設定することもできます。
シェルを起動し、ホームディレクトリ/home/hareport
を持つユーザhareport
を作成します。
root #
useradd
-m -d /home/hareport -c "HA Report" hareport
ユーザのパスワードを設定します。
root #
passwd hareport
プロンプトが表示されたら、ユーザのパスワードを入力し、確認のために再度入力します。
すべてのノードで同じユーザアカウントを作成するため、各ノードで上の手順を繰り返してください。
デフォルトでは、SSHデーモンおよびSSHクライアントはポート22
で通信およびリスンします。ネットワークセキュリティガイドラインによって、デフォルトのSSHポートを大きい番号の別のポートに変更することが要求されている場合は、デーモンの設定ファイル/etc/ssh/sshd_config
を変更する必要があります。
デフォルトポートを変更するには、ファイルでPort
行を検索してコメント解除し、目的に応じて編集します。たとえば、次のように設定します。
Port 5022
組織においてroot
ユーザが他のサーバにアクセスすることが許可されていない場合、このファイルでPermitRootLogin
エントリを検索してコメント解除し、no
に設定します。
PermitRootLogin no
または、次のコマンドを実行して、各行をファイルの末尾に追加します。
root #
echo “PermitRootLogin no” >> /etc/ssh/sshd_configroot #
echo “Port 5022” >> /etc/ssh/sshd_config
/etc/ssh/sshd_config
を変更したら、SSHデーモンを再起動して新しい設定を有効にします。
root #
systemctl restart sshd
各クラスタノードで、このSSHデーモンの設定を繰り返してください。
クラスタ内のすべてのノードでSSHポートを変更する場合、SSH設定ファイル/etc/ssh/sshd_config
を変更するのが便利です。
デフォルトポートを変更するには、ファイルでPort
行を検索してコメント解除し、目的に応じて編集します。たとえば、次のように設定します。
Port 5022
または、次のコマンドを実行して、各行をファイルの末尾に追加します。
root #
echo “Port 5022” >> /etc/ssh/ssh_config
このSSHクライアントの設定は、クラスタレポートを実行するノードでのみ必要です。
または、-X
オプションを使用してカスタムSSHポートでcrm report
を実行することも、crm report
がデフォルトでカスタムSSHポートを使用するように設定することもできます。詳細については、手順D.5「カスタムSSHポートを使用したクラスタレポートの生成」を参照してください。
パスワードを要求されずに、SSHを使用して他のサーバにアクセスできます。これは一見、安全ではないように見えますが、ユーザは自身の公開鍵が共有されているサーバにしかアクセスできないため、実際は非常に安全なアクセス方法です。共有鍵は、その鍵を使用するユーザとして作成する必要があります。
クラスタレポートの実行用に作成したユーザアカウントでノードの1つにログインします(上の例では、このユーザアカウントはhareport
です)。
新しい鍵を生成します。
hareport >
ssh-keygen –t rsa
このコマンドは、デフォルトで2,048ビットの鍵を生成します。鍵のデフォルトの場所は~/.ssh/
です。鍵にパスフレーズを設定するよう求められます。ただし、パスワードなしでログインする場合は、鍵にパスフレーズがあってはならないため、パスフレーズを入力しないでください。
鍵が生成されたら、公開鍵を他の「それぞれの」ノードにコピーします(鍵を作成したノードを「含む」)。
hareport >
ssh-copy-id -i ~/.ssh/id_rsa.pub HOSTNAME_OR_IP
このコマンドでは、各サーバのDNS名、エイリアス、またはIPアドレスを使用できます。コピー中に、各ノードのホスト鍵を受諾するよう求められるので、hareport
ユーザアカウントのパスワードを入力する必要があります(パスワードを入力する必要があるのは、ここだけです)。
鍵をすべてのクラスタノードと共有したら、パスワード不要のSSHを使用して、ユーザhareport
として他のノードにログインできるかどうかをテストします。
hareport >
ssh HOSTNAME_OR_IP
証明書の受諾やパスワードの入力を要求されることなく、自動的にリモートサーバに接続されます。
毎回同じノードからクラスタレポートを実行する場合は、上の手順は、このノードでのみ実行すれば十分です。そうでない場合は、各ノードでこの手順を繰り返します。
sudo
の設定 #
sudo
コマンドは、通常のユーザを素早くroot
にしてコマンドを発行できるようにします。パスワードの入力は、必要な場合と不要な場合があります。すべてのルートレベルのコマンドにsudoアクセスを付与することも、特定のコマンドにのみ付与することもできます。一般的には、sudoはエイリアスを使用してコマンド文字列全体を定義します。
sudoを設定するには、visudo
(viでは「ありません」)またはYaSTを使用します。
コマンドラインからsudoを設定するには、visudo
を使用して、root
としてsudoersファイルを編集する必要があります。他のエディタを使用すると、構文エラーやファイルパーミッションエラーが発生し、sudoを実行できないことがあります。
root
としてログインします。
/etc/sudoers
ファイルを開くため、「visudo
」と入力します。
カテゴリHost alias specification
、User alias specification
、Cmnd alias specification
、およびRunas alias specification
を探します。
次のエントリを/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
ホストエイリアスは、sudoユーザがコマンド発行権利を持つサーバ(またはサーバの範囲)を定義します。ホストエイリアスでは、DNS名またはIPアドレスを使用するか、ネットワーク範囲全体を指定できます(例: | |
ユーザエイリアスでは、複数のローカルユーザアカウントを1つのエイリアスに追加できます。ただし、この場合、使用するアカウントは1つだけであるため、エイリアスの作成を避けることができます。上の例では、クラスタレポート実行用に作成した | |
コマンドエイリアスは、ユーザが実行できるコマンドを定義します。これは、非ルートユーザが | |
runasエイリアスは、コマンドの実行に使用するアカウントを指定します。この場合は、 |
次の2行を検索します。
Defaults targetpw ALL ALL=(ALL) ALL
これらは、作成したい設定と衝突するため、無効にします。
#Defaults targetpw #ALL ALL=(ALL) ALL
User privilege specification
を探します。
上のエイリアスを定義したら、そこに次のルールを追加できます。
HA CLUSTER = (R) NOPASSWD:HA_ALLOWED
NOPASSWORD
オプションは、ユーザhareport
がパスワードを入力せずにクラスタレポートを実行できるようにします。
クラスタ内のすべてのノードでこのsudo設定を行う必要があります。sudoに他の変更は必要なく、再起動が必要なサービスもありません。
上で行った設定でクラスタレポートを実行するには、ノードの1つにユーザhareport
としてログインする必要があります。クラスタレポートを起動するには、crm report
コマンドを使用します。次に例を示します。
root #
crm report
-f 0:00 -n "alice bob charlie"
このコマンドは、指定したノード上の午前0時
以降の情報をすべて抽出し、現在のディレクトリにpcmk-DATE.tar.bz2
という名前の*.tar.bz2
アーカイブを作成します。
カスタムSSHポートを使用する場合、crm report
で-X
を使用して、クライアントのSSHポートを変更します。たとえば、カスタムSSHポートが5022
の場合、次のコマンドを使用します。
root #
crm report -X "-p 5022" [...]
crm report
のカスタムSSHポートを永続的に設定するには、crm対話型シェルを開始します。
crm options
次のように入力します。
crm(live)options#
set core.report_tool_options "-X -oPort=5022"