如何在 CentOS 7 上生成和设置 SSH 密钥?
介绍
在当今的数字时代,安全通信是个人和企业的首要任务。当敏感数据通过互联网传输时,保持其机密性并防止未经授权的访问非常重要。这就是 SSH 密钥发挥作用的地方。
SSH 密钥是一种身份验证方法,用于在两个网络设备之间建立安全连接。它们是通过加密实现安全数据传输的加密密钥。
与传统的用户名/密码身份验证方法不同,SSH 密钥更加安全。密码可以被猜测或破解,但 SSH 密钥对几乎不可能被破解。
在 CentOS 7 上生成 SSH 密钥
安全通信的关键
SSH 密钥对于在两个系统之间建立安全通信至关重要。它们本质上是一对加密密钥(公钥和私钥),可以使用 ssh-keygen 命令创建。
私钥保存在客户端系统上,而公钥则复制到客户端希望访问的服务器。当客户端尝试连接到服务器时,它会发送其公钥以及身份验证请求。
分步指南
在 CentOS 7 上生成 SSH 密钥的过程涉及使用 ssh-keygen 命令,该命令预安装在包括 CentOS 7 在内的大多数 Linux 发行版中。要生成 RSA (Rivest-Shamir-Adleman) 类型 SSH 密钥对,请按照以下步骤操作 -
打开终端或命令提示符。
输入“ssh-keygen”并按 Enter 键。
您将看到一条提示,询问您要将新密钥保存在哪里。默认位置通常就可以,因此只需按 Enter 键即可。
系统还会提示您输入密码(password)。通常建议您在这里选择强大的东西,因为如果有人能够访问您的私钥,他们将拥有完全访问权限,就像他们是您一样!
当提示输入空密码时,再按两次 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
将“username”替换为您要在远程服务器上访问的帐户的用户名,将“remote_server_ip_address”替换为其 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 密钥以维护其安全至关重要。