如何在 CentOS 7 上生成和设置 SSH 密钥?


简介

在当今的数字时代,安全通信对于个人和企业都至关重要。当敏感数据通过互联网传输时,务必确保其机密性和免受未经授权的访问。这就是 SSH 密钥发挥作用的地方。

SSH 密钥是一种身份验证方法,用于在两个网络设备之间建立安全连接。它们是加密密钥,通过加密实现安全数据传输。

与传统的用户名/密码身份验证方法不同,SSH 密钥更加安全。密码可能会被猜测或破解,但 SSH 密钥对几乎不可能被破解。

在 CentOS 7 上生成 SSH 密钥

安全通信的关键

SSH 密钥对于在两个系统之间建立安全通信至关重要。它们本质上是一对加密密钥——公钥和私钥——可以使用 ssh-keygen 命令创建。

私钥保存在客户端系统上,而公钥则复制到客户端希望访问的服务器上。当客户端尝试连接到服务器时,它会发送其公钥以及身份验证请求。

分步指南

在 CentOS 7 上生成 SSH 密钥的过程涉及使用 ssh-keygen 命令,该命令预装在大多数 Linux 发行版(包括 CentOS 7)中。要生成 RSA(Rivest-Shamir-Adleman)类型的 SSH 密钥对,请按照以下步骤操作:

  • 打开您的终端或命令提示符。

  • 键入 `ssh-keygen` 并按 Enter 键。

  • 您将看到一个提示,询问您希望将新密钥保存到哪里。默认位置通常没问题,因此只需按 Enter 键即可。

  • 您还会被提示输入密码短语(密码)。通常建议您在此处选择一个强密码,因为如果有人能够访问您的私钥,他们将拥有完全访问权限,就像他们就是您一样!

  • 当提示输入空密码短语时,再按两次 Enter 键(除非您想要一个)。您现在已成功生成您的 RSA SSH 密钥!

密钥生成期间可用的选项

在生成过程中,有几个选项可用于额外控制 SSH 密钥的创建方式。例如:

  • 密钥类型 - RSA 是默认选项,但您也可以使用 DSA(数字签名算法)或 ECDSA(椭圆曲线数字签名算法)生成密钥。- 密钥大小:RSA 和 DSA 的默认密钥大小为 2048 位,但如果需要更高的安全性,可以增加此值。

  • 密码短语 - 密码短语是可选的,但它为您的 SSH 密钥添加了另一层安全性。确保选择一个强密码,其中包含大写和小写字母、符号和数字。

在 CentOS 7 上设置 SSH 密钥

使用 ssh-copy-id 命令将公钥复制到远程服务器

生成 SSH 密钥后,下一步是将您的公钥复制到您要访问的远程服务器。最简单的方法是使用 ssh-copy-id 命令。此命令会自动将您的公钥复制到远程服务器的 authorized_keys 文件中,允许您使用私钥进行身份验证。

使用此命令的语法如下:

ssh-copy-id username@remote_server_ip_address 

将“用户名”替换为您想要访问远程服务器上的帐户的用户名,并将“远程服务器 IP 地址”替换为其 IP 地址或域名。在此过程中,系统会提示您输入远程服务器上的密码。

复制公钥的其他方法

如果由于某种原因(例如,它未安装在本地或远程系统上)无法使用 ssh-copy-id,则可以使用其他方法手动复制公钥。一种方法是使用文本编辑器并将您的公钥复制粘贴到远程服务器上 authorized_keys 文件的新行中。为此,请按照以下步骤操作:

  • 打开一个新的终端窗口并导航到您的公钥所在的目录。

  • 使用 cat 或 more 命令查看其内容:

cat ~/.ssh/id_rsa.pub 
  • 复制此文件的所有内容。

  • 以 root 身份登录或使用 sudo su 并以 nano 方式打开 SSH 配置文件:

nano ~/.ssh/authorized_keys 
  • 在此处粘贴复制的内容。

  • 保存更改并关闭 nano。

故障排除设置过程中的常见问题

在 SSH 密钥设置过程中可能会出现一些常见问题。最常见的问题之一是 authorized_keys 文件或其父目录的权限不正确。这可能会阻止您的公钥被复制到 authorized_keys 文件中,或者阻止您使用私钥访问远程服务器。

要解决此问题,请确保 .ssh 目录和 authorized_keys 文件的权限分别设置为 700 和 600:

chmod 700 ~/.ssh 
chmod 600 ~/.ssh/authorized_keys 

另一个可能出现的问题是 authorized_keys 文件中公钥的格式不正确。

确保您的公钥格式正确,没有换行符,并且它位于此文件中的单行上。如果在此过程中遇到任何其他问题,请检查 CentOS 系统上的 /var/log/secure 中的日志,以查找有关问题所在的有用信息。

SSH 密钥管理的高级主题

不同类型 SSH 密钥(例如 RSA、DSA、ECDSA)的概述

SSH 密钥有多种类型,每种类型都有其自己的一组独特特征,使其更适合某些用例。三种最常用的 SSH 密钥类型是 RSA、DSA 和 ECDSA。RSA 是最广泛使用的 SSH 密钥类型,支持从 1024 到 4096 位的密钥大小。

它被认为对于大多数用途都是安全可靠的。DSA 密钥的使用频率较低,但与 RSA 密钥相比,其签名和验证速度更快。

但是,DSA 的最大密钥大小限制为 1024 位,并且被认为不如 RSA 安全。ECDSA 是一种较新的 SSH 密钥类型,它使用椭圆曲线密码学而不是 RSA 和 DSA 使用的更传统的方法。

它提供更快的签名时间和更小的密钥大小,同时保持强大的安全特性。但是,并非所有服务器或客户端都支持它。

对不同服务器或用途使用多个密钥

用户通常需要使用 SSH 密钥访问多个服务器,每个服务器都有其自己的一组要求(例如,不同的用户名或密码短语)。在这些情况下,务必为每个服务器使用单独的密钥,以最大程度地降低密钥被泄露的风险。要在同一台客户端计算机上使用多个 SSH 密钥,您需要使用每个密钥对的唯一文件名(例如,id_rsa_server1)创建单独的私钥/公钥对。

然后,您可以通过使用 IdentityFile 等选项设置 ssh 配置文件来指定连接到特定服务器时应使用哪个密钥。多个密钥的另一个用例是在访问需要通过 SSH 进行身份验证的不同服务或应用程序时。

例如,您可能有一组密钥用于访问 Git 存储库,另一组密钥用于登录远程服务器。通过使用单独的密钥,您可以最大程度地降低与一个密钥被泄露相关的风险。

结论

在本文中,我们介绍了在 CentOS 7 上生成和设置 SSH 密钥的步骤。我们探讨了 SSH 密钥在安全通信中的重要性以及将其用于身份验证的好处。在生成 SSH 密钥时,务必选择一个难以猜测或暴力破解的强密码。

此外,我们还介绍了将公钥复制到远程服务器的不同方法以及故障排除设置过程中的常见问题。定期更新和轮换您的 SSH 密钥以维护其安全性至关重要。

更新于: 2023年6月6日

1K+ 阅读量

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告

© . All rights reserved.