注意:

替换 Oracle Cloud VMware Solution ESXi 主机的 SSH 密钥

简介

Oracle Cloud VMware Solution 提供客户管理的原生基于 VMware 的云环境,使用熟悉的 VMware 工具实现完全控制。但是,如果用于访问 ESXi 主机的 SSH 密钥丢失,则需要另一种方法来重新获取访问权限。本教程概述了为 ESXi 主机启用基于密码的登录以及替换 SSH 密钥所涉及的任务。

Oracle Cloud VMware Solution (OCVS) SDDC 计算实例和 ESXi 主机的 SSH 访问通常使用与预配期间提供的公钥对应的私钥来实现。但是,如果专用 SSH 密钥丢失或不可用,则无法直接通过 SSH 访问 ESXi 主机。在这种情况下,解决方法是访问 ESXi 主机的直接控制台用户界面 (Direct Console User Interface,DCUI),启用基于口令的登录,然后通过 SSH 连接到 ESXi 主机以替换授权密钥部分中的公共密钥。验证新公钥是否按预期工作后,您可以禁用基于密码的登录以提高安全性。

目标

先决条件

任务 1:创建与 ESXi 主机的控制台连接

  1. 打开 Oracle Cloud 控制台导航菜单,依次单击计算实例

  2. 选择 Oracle Cloud VMware Solution SDDC 的第一个 ESXi 主机。

  3. 单击控制台连接

  4. 单击创建本地连接

    在“计算”部分中为 ESXi 主机创建本地控制台连接

  5. 为控制台连接生成 SSH 密钥对或上载您自己的公共密钥,在此示例中,我们将创建新的密钥对。

    为控制台连接生成新密钥对

  6. 单击创建控制台连接,等待连接的状态更改为活动

任务 2:访问 ESXi 主机的控制台连接或 DCUI

控制台连接更改为活动状态后,请完成以下步骤。

  1. 单击连接右侧的 kebab 图标,然后单击复制 Windows 的 VNC 连接

    :如果使用的是 Linux/Mac 计算机,请按照相应的步骤操作。

    复制连接的 VNC 连接命令

  2. 将复制的命令粘贴到文本编辑器。

    Start-Job { Echo N | plink.exe -i $env:homedrive$env:homepath\oci\console.ppk -N -ssh -P 443 -l ocid1.instanceconsoleconnection.oc1.ap-melbourne-1.anwwkljxyzxyzxyzxyzhatrpp5gdhi75lunwazur6vlkost37m2rxa -L 5905:ocid1.instance.oc1.ap-melbourne-1.anwwkljrxyzxyzxyzxyzoua6cxxfbtqbg2tvhkogyusd6scnb2wfdnfcfmzq:5905 instance-console.ap-melbourne-1.oci.oraclecloud.com }; sleep 5; plink.exe -i $env:homedrive$env:homepath\oci\console.ppk -N -L 5900:localhost:5900 -P 5905 localhost -l ur6vlkost37m2rxa
    
  3. 替换以下命令中的两个 $env:homedrive$env:homepath\oci\console.ppk 部分以指向您的私钥。

    Start-Job { Echo N | plink.exe -i C:\Keys\ssh-key-2022-06-11-converted.ppk -N -ssh -P 443 -l ocid1.instanceconsoleconnection.oc1.ap-melbourne-1.anwwkljxyzxyzxyzxyzhatrpp5gdhi75lunwazur6vlkost37m2rxa -L 5905:ocid1.instance.oc1.ap-melbourne-1.anwwkljrxyzxyzxyzxyzoua6cxxfbtqbg2tvhkogyusd6scnb2wfdnfcfmzq:5905 instance-console.ap-melbourne-1.oci.oraclecloud.com }; sleep 5; plink.exe -i C:\Keys\ssh-key-2022-06-11-converted.ppk -N -L 5900:localhost:5900 -P 5905 localhost -l ur6vlkost37m2rxa
    
  4. 启动 Windows PowerShell 或终端,运行以下命令并按照提示开始会话。

    使用 Windows PowerShell 使用 VNC 命令建立的控制台连接

  5. 连接启动后,打开 VNC Viewer 并使用 localhost:localport 命令与控制台建立连接。对于本教程,我们将使用 localhost:5900

  6. 建立连接后,您可以看到 DCUI。

    使用 VNC Viewer 访问 VMware DCUI

  7. ALT+F1 可访问控制台,使用 opc 用户和 SDDC 密码登录。

    从控制台连接登录到 ESXi shell

任务 3:为 ESXi 主机启用基于口令的验证

  1. 要为 opc 用户启用基于口令的登录,请编辑 /etc/ssh/sshd_config 文件。

  2. PasswordAuthentication 设置更改为 yes 并保存文件。

  3. 通过运行以下命令重新装入 SSH 服务:/etc/init.d/SSH restart

  4. 为 opc 用户配置密码。

    为 ESXi 主机启用基于密码的登录

任务 4:在 ESXi 主机上添加新公钥

  1. 使用您在上一步中配置的密码通过 SSH 连接到 ESXi 主机。

    使用设置密码通过 SSH 连接到 ESXi 主机

  2. 编辑位于 /etc/ssh/keys-opc/authorized_keys 文件。

    添加新的 SSH 公共密钥以替换旧的或丢失的密钥

  3. 替换现有公钥或添加新的公钥。

    在授权的 ESXi 主机密钥中显示新公钥

任务 5:使用新的 SSH 密钥对测试访问

  1. 使用新的 SSH 密钥对建立到 ESXi 主机的新 SSH 会话。

    使用新的 SSH 密钥对将 SSH 验证到 ESXi 主机

任务 6:禁用基于密码的登录

在任务 5 中使用新的 SSH 密钥测试访问后,出于安全原因,必须禁用基于密码的登录。

  1. 编辑 /etc/ssh/sshd_config 文件并将 PasswordAuthentication 设置更改为 no

  2. 重新启动 SSH 服务。

    禁用基于密码登录到 ESXi 主机

  3. 验证基于密码的登录是否不起作用。

    验证基于密码的登录名不再有效

任务 7:启用持久性 SSH 公共密钥

要确保配置即使在 ESXi 主机重新引导后仍然存在,请执行以下步骤将新公共密钥添加到 authorized_keys 文件:

  1. 在继续之前,如果尚未建立到 ESXi 主机的 SSH 连接,请建立该连接。

  2. 将新公共密钥复制到变量。

    NEW_PUB_KEY = "Paste New Public Key here"

  3. 将新的公钥附加到 ESXi 主机上的 authorized_keys 文件。

    echo "<$NEW_PUB_KEY>" >> /etc/ssh/keys-root/authorized_keys

  4. authorized_keys 文件启用 sticky 位以防止意外修改。

    chmod +t /etc/ssh/keys-root/authorized_keys

  5. 执行自动备份脚本以使 authorized_keys 文件持久化。

    /sbin/auto-backup.sh

后续步骤

在 Oracle Cloud VMware Solution SDDC 中的所有 ESXi 主机上连续执行任务 1 到 7。

确认

更多学习资源

浏览 docs.oracle.com/learn 上的其他实验室,或者通过 Oracle Learning YouTube 频道访问更多免费学习内容。此外,请访问 education.oracle.com/learning-explorer 以成为 Oracle Learning Explorer。

有关产品文档,请访问 Oracle 帮助中心