如何在 Ubuntu 上生成 SSH 密钥?

linuxoperating systemopen source

简介

本文将重点介绍如何在 Ubuntu 上生成 SSH 密钥。Ubuntu 是全球开发者最常用的 Linux 发行版之一。我们将逐步指导您如何使用命令行界面 (CLI) 和 FileZilla 等 GUI 工具生成 SSH 密钥对。本文还将介绍用户在 Ubuntu 上生成或使用 SSH 密钥时可能遇到的常见问题,以及针对每个问题的故障排除技巧和解决方案。

无论您是寻求安全访问远程服务器的开发者,还是负责大规模维护安全的系统管理员,本文都旨在帮助您在 Ubuntu 上生成强大且安全的 SSH 密钥对。那么,让我们开始吧!

使用 SSH 密钥而非密码的优势

使用密码进行身份验证一直存在问题,因为如果没有妥善保护,密码很容易被黑客猜到。相比之下,SSH 密钥更加安全,因为如果没有私钥,几乎不可能被破解。此外,SSH 密钥比密码提供更高的安全级别,因为与密码不同,SSH 密钥无法被猜测或窃取。

因此,使用 SSH 密钥是保护您的计算机和数据免遭未经授权访问的有效方法。此外,随着远程办公在当今世界的重要性日益增加,SSH 为人们提供了一种安全可靠的方式,让他们可以从世界任何地方远程访问他们的计算机。

在 Ubuntu 上生成 SSH 密钥对

SSH 密钥是用于验证与远程计算机的安全连接的加密安全密钥。要在 Ubuntu 上生成 SSH 密钥对,您可以使用名为"ssh-keygen"的命令行界面 (CLI) 工具。ssh-keygen 命令会生成两个独立的文件:私钥和公钥,它们以不同的方式用于启用安全身份验证。

要在 Ubuntu 上生成 SSH 密钥对,首先按 Ctrl + Alt + T 打开终端窗口。然后输入以下命令并按 Enter 键 -

ssh-keygen

默认情况下,ssh-keygen 会生成密钥大小为 2048 位的 RSA 私钥和公钥。您还可以指定其他选项,例如 DSA 或 ECDSA 密钥、不同的密钥长度以及添加密码短语以提高安全性。

例如,要生成一个 ECDSA 密钥(而不是默认的 RSA 类型),其长度为 4096 位,并添加密码短语以提高安全性 -

ssh-keygen -t ecdsa -b 4096 -C "my-secure-passphrase"

输入所需选项后,ssh-keygen 将提示您输入新的 SSH 密钥的保存位置。默认情况下,这些文件将保存在 ~/.ssh 目录中,私钥文件名为 id_rsa,公钥文件名为 id_rsa.pub。

密钥类型

根据您的需求,可以使用 ssh-keygen 生成多种不同类型的 SSH 密钥 -

  • RSA - 这是最常见的 SSH 密钥类型之一。

    它使用非对称加密方法,这意味着它允许使用独立但数学上相关的密钥进行加密和解密。RSA 支持多种长度,包括 2048 位或 3072 位。

  • DSA - 数字签名算法 (DSA) 是另一种可用于生成 SSH 密钥的非对称加密算法。它比 RSA 更快,但安全性也更低。

    DSA 密钥通常比 RSA 密钥更短,安全性也更低,在美国法律体系中被广泛用于数字签名。

  • ECDSA − 椭圆曲线数字签名算法 (ECDSA) 是一种较新的非对称加密算法,比 RSA 和 DSA 密钥更快、更安全。

它使用较小的密钥来实现类似的安全级别,从而更有效地利用带宽。ECDSA 密钥有不同的长度,包括 256 位、384 位或 521 位。

添加密码

在 Ubuntu 上生成 SSH 密钥对时,您可以选择为私钥添加密码,以增强安全性。密码可以提供额外的保护,防止他人未经授权访问您的私钥。这意味着,即使有人访问了您的私钥文件,除非他们也知道密码,否则无法使用。

要在生成 SSH 密钥对时添加密码,只需在 ssh-keygen 工具提示时输入即可。或者,如果您不需要这种额外的保护,也可以将密码留空。

保存密钥

默认情况下,ssh-keygen 将公钥和私钥都保存在 ~/.ssh 目录中,并以 id_rsa 作为默认文件名: - `~/.ssh/id_rsa`:私钥 - `~/.ssh/id_rsa.pub`:公钥

您可以使用"-f"参数加上自定义文件名来更改这些名称 -

ssh-keygen -t rsa -b 4096 -C "my-secure-passphrase" -f "~/.ssh/my_key"

这将在 .ssh 目录下保存两个名为 my_key(私钥)和 my_key.pub(公钥)的文件。密钥生成成功后,下一步是将公钥添加到远程服务器以进行安全身份验证。

将公钥添加到远程服务器

为什么需要添加公钥

生成 SSH 密钥对时,会同时创建私钥和公钥。私钥应始终妥善保管,切勿与任何人共享。

但是,公钥可以与远程服务器共享,以便验证您的连接。当您连接到已设置 SSH 身份验证的服务器时,它会要求您输入公钥。

如果服务器识别了您的公钥,它将允许您无需输入密码即可连接。这种方法如此受欢迎的原因在于它比传统的密码验证提供了额外的安全保障。

密码可能被盗或被黑客入侵,但除非有人能够物理访问托管文件本身的设备,否则他们很难访问您的私钥文件。使用 SSH 密钥对简化了登录远程服务器的过程,同时提高了安全性。

添加公钥的分步说明

既然我们已经讨论了添加公钥的重要性,那么让我们来看看如何使用命令行界面 (CLI) 或 FileZilla 等 GUI 工具来完成此操作 -

通过 CLI 添加公钥:

  • 在 Ubuntu 上按 Ctrl + Alt + T 打开终端

  • 导航到您生成 SSH 密钥的位置

  • 使用以下命令语法 -

ssh-copy-id user@remotehost

通过 FileZilla 添加公钥:

  • 打开 FileZilla 并连接到您的远程主机。

  • 点击"编辑">"设置">"SFTP"。

  • 在"SSH 私钥"中,点击"添加",然后在您的计算机上找到与您的公钥匹配的私钥文件。

  • 点击"确定"。

完成上述任一方法后,您现在应该能够使用公钥通过 SSH 身份验证连接到远程服务器。

结论

在当今世界,数据安全对每个个人和组织都至关重要。随着网络攻击和数据泄露事件的日益增多,使用强大的安全措施来保护您的敏感数据已变得至关重要。 SSH 密钥提供了一种在访问远程服务器或应用程序时进行身份验证的安全方法。

SSH 密钥使用加密算法来确保您的设备与远程服务器之间的安全通信,而无需依赖可能被盗的密码。SSH 密钥是安全通信协议不可或缺的一部分,在 Ubuntu 上生成密钥非常简单直接。


相关文章


有用资源