D 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
スクリプトを正常に実行する唯一のオプションは、専用のローカルユーザを作成することだけです。
D.1 ローカルユーザアカウントの作成 #
次の例では、コマンドラインからhareport
という名前のローカルユーザを作成します。パスワードは、セキュリティ要件を満たしていれば何でも構いません。または、YaSTでユーザアカウントを作成してパスワードを設定することもできます。
シェルを起動し、ホームディレクトリ
/home/hareport
を持つユーザhareport
を作成します。root #
useradd
-m -d /home/hareport -c "HA Report" hareportユーザのパスワードを設定します。
root #
passwd hareportプロンプトが表示されたら、ユーザのパスワードを入力し、確認のために再度入力します。
すべてのノードで同じユーザアカウントを作成するため、各ノードで上の手順を繰り返してください。
D.2 パスワード不要のSSHアカウントの設定 #
デフォルトでは、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証明書の受諾やパスワードの入力を要求されることなく、自動的にリモートサーバに接続されます。
毎回同じノードからクラスタレポートを実行する場合は、上の手順は、このノードでのみ実行すれば十分です。そうでない場合は、各ノードでこの手順を繰り返します。
D.3 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アドレスを使用するか、ネットワーク範囲全体を指定できます(例:
172.17.12.0/24
)。アクセスの範囲を制限するには、クラスタノードのホスト名のみを指定する必要があります。ユーザエイリアスでは、複数のローカルユーザアカウントを1つのエイリアスに追加できます。ただし、この場合、使用するアカウントは1つだけであるため、エイリアスの作成を避けることができます。上の例では、クラスタレポート実行用に作成した
hareport
ユーザを追加しています。コマンドエイリアスは、ユーザが実行できるコマンドを定義します。これは、非ルートユーザが
sudo
を使用する際にアクセスできるコマンドを制限する場合に便利です。この場合、hareport
ユーザアカウントには、コマンドcrm report
およびsu
に対するアクセスが必要です。runas
エイリアスは、コマンドの実行に使用するアカウントを指定します。この例では、次のようになりますroot
.次の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に他の変更は必要なく、再起動が必要なサービスもありません。
D.4 クラスタレポートの生成 #
上で行った設定でクラスタレポートを実行するには、ノードの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"