Satellite ホストでSSHを有効にする
トラブルシューティングやデバッグを行う際、 Satellite ホストをコントロールプレーンやクラスターに割り当てる前、あるいは割り当てた後に、そのホストへのSSHアクセスが必要になる場合があります。
例えば、ホストの割り当てに問題がある場合、クラスタに割り当てる前に、root 以外のユーザーにホストへの SSH アクセスを許可することができます。
ホストへの SSH アクセスを有効にする手順については、以下のセクションを参照してください。
割り当て前のRHCOSホストで非rootのSSHを有効にする
RHCOS
CoreOS ホストでは通常ルートSSHアクセスが無効になっているため、 root と core の両方でホスト割り当ての一部としてSSHアクセスが無効になっています。そのため、デフォルトの core ユーザーではない新しいルート以外のユーザーを追加することで、SSHアクセスを許可することができます。
この指示では、クラスタまたは制御プレーンに割り当てる前に、 Red Hat CoreOS ホスト上の新規ユーザーに SSH アクセスを有効にする方法を説明します。
トラブルシューティングが完了したら、これらの手順を元に戻し、SSH アクセスを無効にしてください。
-
CoreOS ホストを作成した際に使用したホストアタッチイグニッションファイルに、
satelliteユーザーを新規作成します。 イグニッションファイルのpasswdセクションを以下のように編集します。"passwd": { "users": [ { "name": "core", "sshAuthorizedKeys": [ "" ] }, { "name": "satellite", "sshAuthorizedKeys": [ "ssh-rsa AAA... KEYNAME" ], "groups": [ "sudo" ] } ] }, -
SSH公開鍵を追加します。 SSHキー・ペアを作成するには、
ssh-keygen。ssh-keygen -f ~/.ssh/sat-host-access -t rsa -b 4096 -C sat-host-access -P '' -
sat-host-access.pubファイルには、イグニッションファイルに追加するキーが含まれています。 上記の例のssh-rsa AAA... KEYNAMEを置き換えて、ファイルの全内容をイグニッションスクリプトに追加します。sat-host-accessの秘密鍵は、ホストにSSH接続する際に使用します。このホストに追加した公開鍵に対応する秘密鍵を持っていて、ノードにネットワーク・アクセスできる人なら誰でも、このシステムにSSHでアクセスできる。
-
オプション :以下の
journalctlコマンドを実行して、デバッグ用のログを収集する。journalctl -u ibm-host-attach --no-pagerjournalctl -u ibm-host-agent --no-pagerjournalctl -u ibm-firstboot-ignition --no-pager
RHELホストへの割り当て前に、非root SSHを有効にする
RHEL
この手順では、RHELクラスタワーカーノードへの非root SSHアクセスを一時的に有効にする方法を説明します。
トラブルシューティングが完了したら、これらの手順を元に戻し、SSH アクセスを無効にしてください。
作業を開始する前に、未割り当てのホストへのルートSSHアクセス権があることを確認してください。
- この新しいユーザーに、このホストのルートユーザーと同じ SSH キーを使用したい場合は、別のキーは必要ありません。 ただし、この新しいユーザーに別のSSHキーペアを使用したい場合は、そのキーペアを用意するか、ホストにSSH接続する際に使用するシステム上で、新しいSSH公開鍵/秘密鍵ペアを作成してください。 秘密鍵を誰にも提供しないでください。 この手順では、この新しいキーペアを作成したことを前提としています。
ssh-keygen -f ~/.ssh/sat-host-access -t rsa -b 4096 -C sat-host-access -P ''`
ホスト自体で残りの手順を実行します。そのため、先に進む前に、root権限でホストにSSH接続してください。
-
ユーザーを作成し、パスワードなしでsudoにフルアクセスできるように設定します。
useradd -U -m -s /bin/bash satellite && mkdir -p /home/satellite/.ssh && chown -R satellite:satellite /home/satellite/ -
新しいユーザーにSSHキーを追加してください。
- このユーザーにルートユーザーと同じ SSH 鍵を使用したい場合は、以下のコマンドを実行してください。
cp -r /root/.ssh/authorized_keys /home/satellite/.ssh/ ``` * 新しいキーペアを作成した、または既存の公開SSHキーをお持ちの場合は、次のコマンドを実行して、 `satellite` ユーザーに追加してください。 ```sh {: pre} echo "<CONTENTS OF ~/.ssh/sat-host-access.pub OR YOUR OWN PUBLIC KEY>" >> /home/satellite/.ssh/authorized_keys && chmod 600 /home/satellite/.ssh/authorized_keys ``` -
次のコマンドを実行します。
chown -R satellite:satellite /home/satellite/.ssh/authorized_keys -
この新しい
satelliteユーザーにパスワードなしでsudoのフルアクセス権を与えるには、以下のコマンドを実行します。echo "satellite ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoersユーザーの権限をより制限的に設定することもできます。その場合は、代わりにホスト上で設定してください。 トラブルシューティングの目的で、このユーザーにsudoへのフルアクセス権限を与えることをお勧めします。 トラブルシューティングが完了したら、ユーザーを削除するか、その権限を制限することができます。
このホストとネットワークアクセスに追加した公開鍵に対応する秘密鍵を持つ者は誰でも、このシステムにルート権限でSSHログインすることができます。
-
新しいユーザーとしてノードにログインし、動作を確認します。
ssh -i ~/.ssh/sat-host-access satellite@NODE-IP -
次に、以下のコマンドを実行して、このユーザーからroot権限を取得できることを確認します。
sudo su - root -
(任意): ホスト登録およびホストブートストラップ処理による各種ログ出力ファイルを確認してください。
<filepath>を、以下のファイルに順に置き換えてチェックインしてください。 問題に応じて、特定のログ・ファイルがホスト上に存在する場合と存在しない場合があります。- ホスト登録試行の
nohup.outログ。 - 最初のブートストラッピング試行の
/var/log/firstboot.log。 ホスト登録が失敗した場合、このファイルはありません。 - 最初のブートが失敗した場合の基本ブートストラッピング・プロセスの
/tmp/bootstrap/bootstrap_base.log。 ホスト登録が失敗した場合、このファイルはありません。
tail <filepath> ``` 1. `journalctl` コマンドを実行して、デバッグ用のログを収集する。 ```sh {: pre} journalctl -u ibm-host-agent --no-pager ``` ```sh {: pre} journalctl -u ibm-firstboot --no-pager ``` ```sh {: pre} journalctl -u ibm-host-attach --no-pager ``` - ホスト登録試行の
割り当て後のホストでルートSSHを有効にする
RHCOS RHEL
時折、クラスタ内のワーカーノードとしてすでに割り当てられているホストに直接SSH接続する必要が生じる場合があります。 例えば、クラスタのワーカーノードがクラスタのマスターとの接続を失うという問題が発生する可能性があります。 この手順では、 Satellite クラスタ内の Red Hat CoreOS または RHEL クラスタのワーカーノードで、一時的に root SSH アクセスを有効にする方法を説明します。
トラブルシューティングが完了したら、これらの手順を元に戻し、SSH アクセスを無効にしてください。
作業を始める前に、以下のものが揃っていることを確認してください。
- クラスタワーカーに直接アクセスできるシステムにアクセスし、SSHクライアントシステムとして使用する。
- このクラスタへの管理者アクセス権限を付与します。これにより、
oc debug node/NODE-NAMEを実行できます。
-
SSHクライアントでSSH公開鍵/秘密鍵のペアを作成します。 秘密鍵は誰にも渡さないでください。
ssh-keygen -f ~/.ssh/sat-host-access -t rsa -b 4096 -C sat-host-access -P '' -
公開鍵が作成されたことを確認します。
cat ~/.ssh/sat-host-access.pub -
クラスタマスターにアクセスでき、管理者
kubeconfig権限を持つシステムから、以下のコマンドを実行します。oc debug node/NODE-NAME -
NODE-NAMEのシェルから以下のコマンドを実行して、root SSHを有効にします。chroot /hostecho "<CONTENTS OF ~/.ssh/sat-host-access.pub>" >> /root/.ssh/authorized_keyschmod 600 /root/.ssh/authorized_keys -
次のいずれかのコマンドを使用して、
SSHD_CONFIG_FILEの環境変数を設定します。 お使いのワーカーの正確なバージョンによっては、異なる場所に存在する可能性があることにご注意ください。その場合は、次の数ステップで更新できるように、SSHD_CONFIG_FILE環境変数をSSHD設定ファイルのフルパスに設定してください。CoreOS ワーカー用のコマンド例。
export SSHD_CONFIG_FILE="/etc/ssh/sshd_config.d/40-rhcos-defaults.conf"RHEL 9 ワーカーのコマンド例。
export SSHD_CONFIG_FILE="/etc/ssh/sshd_config" -
PermitRootLoginの設定を確認してください。grep ^PermitRootLogin $SSHD_CONFIG_FILE -
PermitRootLoginをyesに設定します。sed -i "s/PermitRootLogin no/PermitRootLogin yes/g" $SSHD_CONFIG_FILE -
設定を確認してください。
grep ^PermitRootLogin $SSHD_CONFIG_FILE -
以下のコマンドを実行して、再起動して終了してください。
systemctl restart sshdexit && exit
この時点で、先に作成した秘密鍵を使用して、SSHクライアントシステムからのルートSSHアクセスが有効になります。 この秘密鍵とノードへのアクセス権を持つ者は誰でも、このシステムにルート権限でSSHログインできることに注意してください。 ノードにSSH接続するには、次のコマンドを使用します: ssh -i ~/.ssh/sat-host-access root@NODE-IP。