注意:
- 本教程需要访问 Oracle Cloud。要注册免费账户,请参阅 开始使用 Oracle Cloud Infrastructure Free Tier。
- 它使用 Oracle Cloud Infrastructure 身份证明、租户和区间的值示例。完成您的实验室时,请将这些值替换为特定于云环境的那些值。
生成 SSH 密钥
简介
SSH(Secure Shell,安全 Shell)协议是用于安全地从一台计算机到另一台计算机的远程登录方法。通过 SSH,可以通过不安全的网络使用加密来保护端点之间的连接的安全系统管理和文件传输。SSH 密钥是安全访问云端 Oracle Cloud Infrastructure 计算实例的重要组成部分。
如果已有 SSH 密钥对,则可以使用该密钥连接到您的环境。我们建议您使用 Oracle Cloud Shell 与要创建的 OCI 计算实例交互。Oracle Cloud Shell 基于浏览器,不需要在笔记本电脑上安装或配置任何内容,可以独立于网络设置运行。但是,如果您希望通过笔记本电脑进行连接,请根据您的配置选择选项。
重要提示 :如果 SSH 密钥未正确创建,将无法连接到您的环境,将会收到错误。请确保正确创建密钥。
选项 1:Oracle Cloud Shell
观看下面的视频,了解 "Generate SSH Keys Cloud Shell"(生成 SSH 密钥云 Shell)选项的概述。
云 Shell 计算机是运行 Bash shell 的小型虚拟机,您可以通过 OCI 控制台(主页)访问该虚拟机。云 Shell 附带预先验证的 OCI CLI(Command Line Interface,命令行界面)、设置为控制台租户主页区域以及新的工具和实用程序。要使用 Cloud Shell 计算机,租户管理员必须授予所需的 IAM(身份和访问管理)策略。
-
要启动 Oracle Cloud shell,请转到您的云控制台,然后单击页面右上角的云 shell 图标。
-
云 shell 启动后,输入以下命令。选择您还可以记住的密钥名称。这将是您连接到您创建的任何计算实例时使用的密钥名称。按 Enter 两次,没有密码短语。
mkdir .ssh cd .ssh ssh-keygen -b 2048 -t rsa -f <<sshkeyname>>
注意 :代码中不应显示尖括号“”。
-
检查刚刚创建的两个文件。
ls
请注意,输出中有两个文件,即 private key:
<<sshkeyname>>
和 public key:<<sshkeyname>>.pub
。保持私有密钥安全,不与任何人共享密钥内容。各种活动都需要公钥,并且可以上载到某些系统以及复制和粘贴以方便在云中进行安全通信。 -
要列出公钥的内容,请使用 cat 命令
cat <<sshkeyname>>.pub
注意 :代码中不应显示尖括号“”。
-
将密钥粘贴到未来实验室中的计算实例时,请确保删除在复制时可能添加的任何硬退货。.pub 键应该一行。
选项 2:MacOS
观看下面的视频,了解有关生成 SSH 密钥 Mac 选项的概述。
-
如果您还没有 MacOS 的终端应用程序的快捷方式,可以在 Applications > Utilities 菜单或键盘上的 (Shift+Command+U) 中找到它。
-
启动 Terminal 并键入命令
ssh-keygen
。ssh-keygen 将要求您保存密钥的位置,通过按 Enter 键接受主目录中的 .ssh 文件夹的默认值。文件名将为id_rsa
或您选择命名密钥的任何内容。按 Enter 两次,没有密码短语。请记住保存密钥的目录 (~/.ssh),稍后在创建实例时需要参考它。ssh-keygen
-
在终端窗口中键入以下命令,以验证公钥和私钥是否已创建,以及复制公钥的内容以便在 OCI 对话框中创建实例。
cd .ssh ls cat id_rsa.pub
请注意,输出中有两个文件,即 private key:
id_rsa
和 public key:id_rsa.pub
。保持私有密钥安全,不与任何人共享密钥内容。各种活动都需要公钥,并且可以上载到某些系统以及复制和粘贴以方便在云中进行安全通信。 -
如果您准备创建实例,请复制内容并在提示输入 SSH 密钥时粘贴。请确保删除在复制时可能添加的任何硬退货。
选项 3:Windows 10
观看下面的视频,了解 "Generate SSH Keys Windows"(生成 SSH 密钥 Windows)选项的概述。
为 Windows 创建密钥很有趣,因为 ssh-keygen
在 Windows 10 发行版之前不是适用于 Windows 的本机实用程序。它未包括在初始 Windows 10 构建中。
-
在 Windows 10 系统上打开 Powershell 命令窗口,方法是单击其图标 / 布局,或者在开始栏的搜索字段中键入 "powershell"。
-
在终端窗口中输入命令
ssh-keygen
。请特别注意保存文件的位置,以便稍后可以找到该文件。ssh-keygen
将默认为用户基目录下的标准 .ssh 目录。ssh-keygen
-
在所有提示处按 Enter 键,以接受默认位置、默认文件名和密码短语。
注意 :在 Unix 变体中,通常会为其前添加点 (。) 的文件夹指定用于配置文件,并从正常视图中“隐藏”。但是,点 (。) 并不表示 Windows 文件夹前的任何特殊之处。因此,文件夹将存在,但不会隐藏。
-
确认您的密钥存在且已正确创建。在 Powershell 窗口中输入以下命令。
cd .ssh ls cat id_rsa.pub
您现在有一个正在运行的 SSH 密钥对,并可以使用它来保护与云中的实例之间的通信。除非您了解所执行的操作,否则不要与任何人共享 private key
id_rsa
。您只需共享和复制 public keyid_rsa.pub
即可。 -
另请注意,如果您选择将密钥的内容复制 / 粘贴到实验室的特定对话框中,则需要通过 Powershell、 Explorer 或其他目录工具在 Windows 中找到该文件,并打开公钥文件来复制其内容。以下示例使用 Powershell 来
cat
内容。可以使用鼠标选择文本,但复制 / 粘贴命令不可用。使用<ctrl-c>
将内容复制到剪贴板以粘贴到其他应用程序对话框。也可以打开带有记事本、Wordpad 或其他文本编辑器的文件。
注意 :不要使用 MS Word 或任何其他富文本编辑器,因为它们可能会添加额外的格式字符,从而使得键不可用。
选项 4:以前的 Windows 版本
使用 Git
在早期版本的 Windows 中,ssh-keygen 不是本机实用程序,因此必须使用第三方实用程序。在本节中,我们将介绍如何使用 Git for Windows。Git for Windows 包括一个名为 Git Bash
的 Unix shell,使用该 shell 创建密钥以及与云主机系统建立 SSH 通信。如果希望使用 PuTTY,请转到下一部分。
-
如果尚未安装,请访问下面的链接并下载应用程序。如果由于权限问题无法在笔记本电脑上安装任何内容,请使用上面的 Oracle Cloud Shell 选项。
-
按照说明进行安装。
注意 :安装适用于 Windows 的 Git 超出了此实验室的范围。
-
安装后,应在 Windows“开始”菜单中为 Git 设置一个条目,该条目应包含 Git Bash 命令。单击 Git Bash 命令。
-
在终端窗口中键入
ssh-keygen
。再次按 Enter 键接受默认位置 (~/.ssh) 和默认文件名 (id_rsa) 和<Enter>
,表示没有口令短语。ssh-keygen
注意 :此处的棘手部分是 Git Bash 使用模拟的 Unix 主目录。要查看、检索或复制密钥,您需要导航到 Windows 目录结构。
-
首先将 ‘ up ’ 导航至根 C:目录。
cd c:
然后将 ‘ down ’ 导航至普通主目录中的 .ssh 文件夹。
cd Users/<your home folder name>/.ssh/
注意 :代码中不应显示尖括号 <>。
ls
请注意,输出中有两个文件,即 private key:
id_rsa
和 public key:id_rsa.pub
。保持私有密钥安全,不与任何人共享密钥内容。各种活动都需要公钥,并且可以上载到某些系统以及复制和粘贴以方便在云中进行安全通信。 -
记下 SSH 公共密钥文件和私钥文件的位置。您可能需要上载文件或将内容复制 / 粘贴到 Oracle Cloud Services 的其他练习中。完全复制密钥内容,在密钥字符后捕获空间可能会导致密钥无效。在下面的示例中,可以使用 gitbash
cat
命令显示公钥文件内容。您可以选择密钥文件内容,然后右键单击以 复制 密钥。或者可以直接上载文件。注意 :如果已经安装了适用于 Windows 的 Git,请不要使用 PuTTY。您可以选择用于生成密钥和终端访问的实用程序。
使用 PuTTY
在早期版本的 Windows 中,ssh-keygen 不是本机实用程序,因此必须使用第三方实用程序。在本节中,我们将使用 PuTTY 进行说明。如果您更喜欢 Git for Windows,请访问此选项之前的选项。
-
如果尚未安装,请访问下面的链接并下载应用程序。对于 Oracle 员工,PuTTY 也可以通过 MyDesktop 应用程序在内部下载。对于非 Oracle 员工和客户,请使用以下链接。如果由于权限问题无法在笔记本电脑上安装任何内容,请使用上面的 Oracle Cloud Shell 选项。
-
按照说明进行安装。
注意 :安装 PuTTY 超出此实验室文档的范围。
安装后,您应该在 Windows 的 "Start"(开始)菜单中有一个条目,也许是 PuTTY 的桌面快捷方式。PuTTY 实际上是一个安全通信实用程序套件。我们将使用其中的两个,即用于终端访问的 PuTTY 实用程序和用于生成安全 SSH 密钥的 PuTTYgen 实用程序。
-
打开 Windows 启动菜单并导航到 PuTTY 文件夹。选择 PuTTYgen 实用程序。
-
验证是否选择了默认值,并且密钥类型应为 RSA 设置为 2048 位。单击 生成 按钮。
-
按照说明将鼠标移到空灰色区域周围以生成随机信息。PuTTY 正在使用该信息生成随机的安全 SSH 密钥。
-
在下面的屏幕中,PuTTY 已获取鼠标信息并创建了一个密钥。我们需要做一些与其他关键生成方法略有不同的事情。尽管我们实际上无法将文件用于 OCI 实例,但仍然需要保存密钥以供将来参考。单击 Save public key 按钮。
注意 :PuTTY 不以 OpenSSH 兼容的格式保存密钥。因此,如果使用 OpenSSH 将使用 PuTTY 创建的公钥文件上载到 Linux/Unix 系统,该密钥将无法正确读取。但是,直接从 PuTTYgen 应用程序复制密钥信息本身时,当 已发布 到随后使用该信息创建正确 OpenSSH 兼容密钥的字段时,密钥信息本身会正常工作。例如,在 OCI 上创建实例时,可以从 PuTTY 粘贴 SSH 密钥,该密钥将正常工作。
-
在 将公共密钥另存为: 对话框中,为密钥命名,并将
.pub
扩展名添加到文件名中。如果将该文件保存在 Windows 用户名 / 文件夹结构下的公用.ssh
文件夹中,这也很有用。在此示例中,将可以访问C:\Users\<username>\.ssh
目录。将密钥存储在此处以便于将来引用。 -
接下来,需要保存私有密钥。单击 Save private key(保存私有密钥) 按钮,回答 Yes(是),了解有关保存而不使用密码短语的警告。
-
命名该密钥并验证其保存有
.ppk
扩展名,以将文件标识为私有密钥文件。不要与任何人共享私有密钥。 -
现在,您已保存密钥供将来参考,只需从 PuTTY 对话框复制密钥信息即可。
-
从头到尾在对话框中选择关键字文本,然后右键单击并选择 复制 。然后可以将密钥粘贴到记事本中,或直接粘贴到 OCI 控制台中的实例创建对话框。
-
下面是 OCI 实例创建表单中的 添加 SSH 密钥 - 粘贴 SSH 密钥 对话框的示例。
这将结束有关使用 PuTTY 为 Windows 10 之前的 Windows 版本生成 SSH 密钥对的部分。
按照以下说明,使用 PuTTY 终端通过 SSH 连接到云实例。
使用 PuTTY 连接到实例
-
从 Windows“开始”菜单中打开 PuTTY 实用程序。在对话框中,输入 OCI 计算实例的 IP 地址。这可从 OCI 控制台 > 计算 > 实例 > 实例详细信息 屏幕中获取。
-
在 类别 下,选择 连接 ,然后选择 数据 字段。输入指定实例的用户名。OCI 实例默认为用户名
opc
。输入opc
。 -
在 类别 下,导航到 连接 - SSH,然后选择 Auth 类别。单击 浏览 按钮并找到您在前一步中创建的
private key file
。单击 打开 按钮以启动与云实例的 SSH 连接。 -
单击 是 可绕过有关未缓存密钥的安全警报。
-
连接成功。您现在已安全地连接到 OCI 云实例。
现在,您可以使用 PuTTY 终端实用程序安全地连接。您可以保存连接信息以供将来使用,并使用自己的定制设置配置 PuTTY。
注意 :如果已安装 PuTTY,请勿使用 Git for Windows。您可以选择用于密钥生成和终端访问。
选项 5:Linux 的 SSH 密钥
-
打开终端窗口并键入
ssh-keygen
命令。ssh-keygen 实用程序有几个命令行选项;但是,为了快速地创建脏密钥供实验室使用,不需要任何选项。在终端窗口中键入ssh-keygen --help
可查看所有可能的选项。现在,只需自行运行该命令即可。ssh-keygen
-
您应该从主目录运行此命令。在本例中为用户 ID
opc
。该对话框将默认为隐藏目录~/.ssh
。如果尚未创建密钥,请通过按 Enter 键接受默认文件名id_rsa
。再次按 Enter 键两次可创建没有密码短语的密钥。在生产环境中的最佳做法是使用安全的密码短语;但是,我们不需要使用这些练习实验室。该对话框将指示密钥对已保存在
/home/username/.ssh
目录中,现在已准备就绪可供使用。 -
转到
.ssh
目录,列出并检查密钥。cd .ssh ls
请注意,输出中有两个文件,即 private key:
id_rsa
和 public key:id_rsa.pub
。保持私有密钥安全,不与任何人共享密钥内容。各种活动都需要公钥,并且可以上载到某些系统以及复制和粘贴以方便在云中进行安全通信。 -
使用 Linux
cat
命令列出id_rsa.pub
的内容。cat id_rsa.pub
-
在某些练习中,会要求您将公共密钥上载或复制到实例,以便于通信。请记住保存文件的位置。其他练习将要求将密钥的“内容”粘贴到各个对话框,以便于安全连接。使用
cat
命令,从关键字“ssh-rsa”开始复制 / 粘贴信息,然后将所有内容复制到行的最后一个字符。在下面的示例中,您将从“ssh-rsa 。。。”复制数据,直到精确到“。。。 -01”之后。完全复制密钥内容,在密钥字符后捕获空间可能会导致密钥无效。您已经创建了一个公共 / 专用 SSH 密钥对,并且可以在需要 SSH 密钥的任何 Oracle OCI 实验室中使用该密钥对。
如果您感兴趣,请单击 此处 获取有关 SSH 的更多详细信息,这是有关从 Linux 实例启动连接以及刚刚创建的 SSH 密钥的简短教程。
致谢
- 作者 -Dan Kingsley(启用专家,OSA)
- 内容提供者 -Kay Malcolm, Tom McGinn, Kamryn Vinson, Anil Nair
更多学习资源
在 docs.oracle.com/learn 上浏览其他实验室,或者访问 Oracle Learning YouTube 频道 上的更多免费学习内容。此外,请访问 education.oracle.com/learning-explorer 以成为 Oracle Learning Explorer。
有关产品文档,请访问 Oracle 帮助中心 。