13.3. 更新 OpenStack 环境中的 SSH 密钥
如果 SSH 密钥在以下情况下小于 2048 位,则必须更新您的 SSH 密钥:
- 在从 RHOSP 16.2 升级到 17.1 的过程中,您要将 Red Hat OpenStack Platform (RHOSP)集群升级到 RHEL 9.2
- 从 RHOSP 17.0 或 17.1 次版本更新到最新的 RHOSP 17.1 次版本
运行 ssh_key_rotation.yaml Ansible Playbook,以安全地自动轮转 SSH 密钥。
按照设计此 Ansible Playbook 不会删除以前的 SSH 密钥,以便您可以验证新的 SSH 密钥是否正常工作。在轮转发生后,您必须手动删除之前的 SSH 密钥。
在 overcloud 上,备份密钥存储在以下目录中:
/home/{{ ansible_user_id }}/backup_keys/{{ ansible_date_time.epoch }}/authorized_keys"
先决条件
- 您有一个完全安装的 RHOSP 环境。
流程
登录到 RHOSP director:
$ ssh stack@director运行 ansible-playbook
ssh_key_rotation.yaml:$ ansible-playbook \ -i /home/stack/overcloud-deploy/<stack_name>/tripleo-ansible-inventory.yaml \ -e undercloud_backup_folder=<full_backup_path> \ -e stack_name=<stack_name> \ /usr/share/ansible/tripleo-playbooks/ssh_key_rotation.yaml-
将
<stack_name> 替换为 overcloud 堆栈的名称。默认名称为overcloud。 将 <
full_backup_path> 替换为堆栈主目录中您选择的目录的完整路径。例如,/home/stack/overcloud_backup_keys。注意如果 playbook 无法找到 SSH 密钥,您必须指定 Ansible playbook 才能工作的密钥位置。如果您在路径中有多个密钥,您必须设置 密钥位置,以避免意外覆盖正确的键。
您可以通过设置
keys_folder和keys_name参数来指定 SSH 密钥位置,而不 设置 <stack_name>参数。例如,如果 SSH 密钥位置是/home/stack/.ssh/id_rsa,请设置以下值:*keys_folder=/home/stack/.ssh*keys_name=id_rsa
-
将
可选:如果您的环境中有多个单元,请为您拥有的每个额外单元重新运行 playbook:
$ ansible-playbook \ -i /home/stack/overcloud-deploy/<stack_name>/tripleo-ansible-inventory.yaml \ -e stack_name=<stack_name> \ -e rotate_undercloud_key=false \ -e ansible_ssh_private_key_file=/home/stack/overcloud_backup_keys/id_rsa tripleo-ansible/playbooks/ssh_key_rotation.yaml-
将
<stack_name> 替换为单元的堆栈名称。每个单元都有不同的名称。 -
您必须通过将
rotate_undercloud_key参数设置为false来确保 undercloud 密钥 不会被 轮转。 -
使用
ansible_ssh_private_key_file参数指向您的 SSH 备份密钥。这样可确保您可以在轮转旧的 SSH 密钥后,对其他单元中的 Compute 主机进行身份验证。
-
将
可选: 您可以将 SSH 密钥复制到
${HOME}/.ssh目录中,以避免在每次连接到 overcloud 节点时使用 a-i选项指定 SSH 密钥。此操作将覆盖此目录中的id_rsa和id_rsa.pub密钥。如果您使用这些密钥用于任何其他目的,请在执行此操作前移动或备份它们:$ cp /home/stack/overcloud-deploy/overcloud/<private_key> ~/.ssh/id_rsa $ cp /home/stack/overcloud-deploy/overcloud/<public_key> ~/.ssh/id_rsa.pub-
将
<private_key> 替换为私有 SSH 密钥的文件名。 -
将
<public_key> 替换为公共 SSH 密钥的文件名。
-
将
- 验证新 SSH 密钥是否正常工作,如果是,请手动删除您之前的 SSH 密钥。