如何在 macOS、Linux 或 Windows Linux 子系统上使用 OpenSSH 创建 SSH 密钥

介绍

在设置远程 Linux 服务器时, 您需要决定安全连接的方法 。 虽然密码是验证用户身份的一种方式,但密码有多种弱点,可以通过野蛮武力攻击破解。 页:1 Sh ell keys——更被称作_SSH keys_——经常被使用,而不是密码,因为它们提供了更安全的连接远程Linux服务器的方法. 作为Secure Shell加密网络协议的一部分,SSH密钥还使用户能够安全地通过一个无担保网络执行网络服务,例如向远程服务器发送基于文本的命令或配置其服务.

此教程将引导您通过使用OpenSSH,一套开源SSH工具,在macOS和Linux上创建SSH密钥的步骤,以及通过使用Linux的Windows子系统在Windows上创建. 这是为一个刚从命令线开始的听众写的,并将为个人电脑进入终端提供指导。 完成此教程后, 您将会有 SSH 密钥, 可用于在教程 [如何在 DigitalOcean Droplet 上设置 Ubuntu 20.04 服务器] (https://andsky.com/tech/tutorials/how-to-set-up-an-ubuntu-20-04-server-on-a-digitalocean-droplet ) 中安全设置服务器, 这是 [Cloud Course入门] (https://www.digitalocean.com/community/curriculums/introduction-to-the-cloud) 的一部分 .

如果您已经熟悉命令行,并正在寻找如何使用 SSH 连接到远程服务器的说明,请参阅我们关于 [设置 SSH 密钥] 的教程(https://www.digitalocean.com/community/tutorial_collections/how-to-set-up-ssh-keys) 系列的 Linux 操作系统。

前提条件

要完成本教程,您将需要:

  • 运行下列操作系统之一的本地机器: macOS、Linux 或 Windows 安装了 Windows 子系统为 Linux. 如果您正在使用 Windows,您可以在 [Microsoft 文档页面] 上找到下载或更新 Windows 子系统为 Linux 的说明(https://docs.microsoft.com/en-us/windows/wsl/install-win10)。

注意:如果您正在寻找关于如何在没有 Linux 的 Windows 子系统的 Windows 机器上创建 SSH 密钥的说明,请访问我们的产品文档 如何在 Windows 上使用 PuTTY 创建 SSH 密钥

如果您需要介绍如何使用终端和命令行,您可以访问我们的指南 Linux命令行 Primer

第1步:了解SSH密钥

SSH 密钥是两个长字符串,可以用来验证用户请求访问远程服务器的身份。这些密钥由用户使用 SSH 实用程序在本地计算机上生成。

当用户要求使用 SSH 连接到服务器时,服务器会发送使用公共密钥加密的消息,该消息只能通过相关的私钥进行解密。用户的本地机器然后使用其私钥来试图解密消息。

在下一步中,您将打开计算机上的终端,以便您可以访问用于生成一对SSH密钥的SSH实用程序。

步骤2 — 在您的计算机上打开终端

终端允许您通过基于文本的命令与计算机交互,而不是图形用户界面。

在运行 macOS 的机器上,终端应用程序通常位于应用程序文件夹内的实用程序文件夹中,您也可以通过在 Search Spotlight 中搜索终端来找到它。

如果你在 Linux 计算机上工作,你的发行版的默认终端应用程序也通常位于应用程序文件夹内的实用程序文件夹中,你也可以通过桌面搜索功能搜索终端来找到它。

如果您在运行 Linux 的 Windows 子系统的 Windows 机器上工作,则安装后应立即打开 Linux 终端,您也可以通过使用桌面搜索功能搜索Ubuntu来找到它。

一旦您找到系统的终端应用程序,打开一个新的终端窗口. 您的终端应该显示您的用户名,美元符号($)和指针。

在下一步中,您将输入一个基于文本的命令来生成一对SSH密钥。

第3步:使用OpenSSH生成密钥

您的 macOS 或 Linux 操作系统应该已经安装了标准的 OpenSSH 工具套件. 此工具套件包括ssh-keygen的实用程序,您将使用它来生成一对 SSH 密钥。

在您的终端中输入以下命令:

1[environment local]
2ssh-keygen

然后,您将被要求选择密钥的位置. 默认情况下,密钥存储在~/.ssh目录中,其文件名为id_rsa用于私钥和id_rsa.pub用于公共密钥。 使用默认位置允许您的 SSH 客户端在身份验证时自动找到您的 SSH 密钥,因此我们建议您接受这些默认选项。

1[environment local]
2[secondary_label Output]
3Generating public/private rsa key pair.
4Enter file in which to save the key (/home/sammy/.ssh/id_rsa):

<$>[警告] 警告 :如果您之前已经生成了一个密钥对,您将被要求确认您实际上想要重写现有密钥:

1[environment local]
2[secondary_label Output]
3/home/sammy/.ssh/id_rsa already exists.
4Overwrite (y/n)?

如果您选择在磁盘上重写密钥,您将无法使用以前的密钥进行身份验证,选择是一种不可逆转的破坏性过程。

如果您确定要重写磁盘上的现有密钥,则可以按Y,然后按ENTER

如果您选择默认位置,您的公共密钥将位于 /home/sammy/.ssh/id_rsa.pub,您的私钥将位于 /home/sammy/.ssh/id_rsa

选择密钥的位置后,您将被要求输入可选密码,该密码将加密磁盘上的私钥文件。

如果您输入了密码,您将不得不每次使用此密钥都输入密码(除非您正在运行存储解密密钥的SSH代理软件)。

1[environment local]
2[secondary_label Output]
3Created directory '/home/sammy/.ssh'.
4Enter passphrase (empty for no passphrase):
5Enter same passphrase again:

按照最后提示,您的系统将生成 SSH 密钥对:

 1[environment local]
 2[secondary_label Output]
 3Your identification has been saved in /home/sammy/.ssh/id_rsa.
 4Your public key has been saved in /home/sammy/.ssh/id_rsa.pub.
 5The key fingerprint is:
 6a9:49:EX:AM:PL:E3:3e:a9:de:4e:77:11:58:b6:90:26 [email protected]
 7The key's randomart image is:
 8+--[ RSA 2048]----+
 9|     ..o         |
10|   E o= .        |
11|    o. o         |
12|        ..       |
13|      ..S        |
14|     o o.        |
15|   =o.+.         |
16|. =++..          |
17|o=++.            |
18+-----------------+

现在你有一个公共和私钥,你可以使用它来验证。

结论

这些密钥可以用来安全地连接到远程服务器,并且是必需的教程 如何在DigitalOcean Droplet上设置Ubuntu 20.04服务器这跟随本教程在 介绍到云课程

要更深入地深入使用SSH的工作,请访问我们的指南(https://andsky.com/tech/tutorials/ssh-essentials-working-with-ssh-servers-clients-and-keys)。

Published At
Categories with 技术
Tagged with
comments powered by Disqus