如何在 Ubuntu 上生成 SSH 密钥?
简介
在本文中,我们将重点介绍如何在 Ubuntu 上生成 SSH 密钥——这是全球开发人员广泛使用的最流行的 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 添加公钥
通过按 Ctrl + Alt + T 在 Ubuntu 上打开一个终端
导航到您生成 SSH 密钥的位置
使用以下命令语法 -
ssh-copy-id user@remotehost
通过 FileZilla 添加公钥
打开 FileZilla 并连接到您的远程主机。
单击“编辑”>“设置”>“SFTP”。
在“SSH 私钥”中,单击“添加”并浏览计算机上与您的公钥匹配的私钥文件。
单击“确定”。
完成上述任一方法后,您现在应该能够使用 SSH 身份验证和您的公钥连接到远程服务器。
结论
在当今世界,数据安全是每个个人和组织的关键方面。随着网络攻击和数据泄露事件数量的增加,使用强大的安全措施来保护敏感数据变得至关重要。SSH 密钥提供了一种安全的方式来验证您在访问远程服务器或应用程序时的身份。
SSH 密钥不依赖于可能被盗的密码,而是使用加密算法来确保您的设备和远程服务器之间的安全通信。SSH 密钥是安全通信协议不可或缺的一部分,在 Ubuntu 上生成它们既简单又直接。