如何在 Linux 中设置 SSH 密钥

LinuxBeginner
立即练习

简介

本教程将指导你了解 SSH 密钥的基础知识,包括如何生成和管理安全的 SSH 密钥对,以及如何配置它们以实现对 Linux 系统的无缝远程访问。在本教程结束时,你将更好地理解使用 SSH 密钥的好处,以及如何利用它们来提高远程连接的安全性和便利性。

了解 SSH 密钥的基础知识

安全外壳协议(Secure Shell,SSH)是一种广泛用于安全远程访问计算机和服务器的协议。SSH 密钥是 SSH 安全的核心,它提供了一种无需密码且高度安全的认证方法。在本节中,我们将探讨 SSH 密钥的基础知识、其用途以及如何利用它们来增强远程连接的安全性。

什么是 SSH 密钥?

SSH 密钥是一对加密密钥,由一个公钥和一个私钥组成。公钥会与你想要连接的远程服务器或计算机共享,而私钥则安全地保存在你的本地机器上。当你尝试连接到远程系统时,你的 SSH 客户端会使用私钥来认证你的身份,从而让你无需密码即可登录。

使用 SSH 密钥的好处

与传统的基于密码的认证方式相比,使用 SSH 密钥有几个优点:

  1. 更高的安全性:SSH 密钥比密码安全得多,因为它们基于几乎不可能通过暴力攻击破解的加密算法。
  2. 无密码登录:使用 SSH 密钥,你无需记住或输入密码即可登录远程系统,使过程更加便捷高效。
  3. 集中管理:SSH 密钥可以轻松管理并分发到多个远程系统,让你能够保持对基础设施访问的控制权。

SSH 密钥术语

在深入探讨生成和管理 SSH 密钥的过程之前,了解一些关键术语很重要:

  • 公钥:公钥是 SSH 密钥对中与远程服务器或计算机共享的部分。它用于加密初始连接并验证你的身份。
  • 私钥:私钥是 SSH 密钥对中的秘密部分,安全地保存在你的本地机器上。它用于在 SSH 连接期间认证你的身份。
  • SSH 代理:SSH 代理是一个后台进程,它安全地存储你的私钥,使你在每次连接到远程系统时无需输入密码短语即可使用它们。

既然你已经对 SSH 密钥及其好处有了基本的了解,让我们进入下一节,在那里我们将介绍生成和管理安全 SSH 密钥对的过程。

生成和管理安全的 SSH 密钥对

既然我们已经对 SSH 密钥有了基本的了解,那就深入探讨一下生成和管理安全 SSH 密钥对的过程。这个过程对于确保基于 SSH 的远程访问的完整性和有效性至关重要。

生成 SSH 密钥对

要生成新的 SSH 密钥对,你可以在本地机器上使用 ssh-keygen 命令。这个命令将引导你完成创建公钥和私钥对的过程。

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

此命令将生成一个 4096 位的 RSA 密钥对,并将其与你提供的电子邮件地址关联。你可以选择为私钥设置一个密码短语,这会增加一层额外的安全性。

存储和管理 SSH 密钥

生成 SSH 密钥对后,你需要有效地存储和管理这些密钥。私钥应安全地保存在本地机器上,而公钥则需要与你想要访问的远程系统共享。

你可以使用 ssh-agent 来安全地存储你的私钥,这样每次连接到远程系统时就无需输入密码短语即可使用它们。

## 启动 ssh-agent
eval $(ssh-agent -s)

## 将你的私钥添加到代理
ssh-add ~/.ssh/id_rsa

分发公钥

为了让远程系统能够使用你的 SSH 密钥来认证你的身份,你需要将公钥分发给那些系统。你可以通过复制公钥文件的内容(例如 ~/.ssh/id_rsa.pub)并将其粘贴到远程系统上的 authorized_keys 文件中来实现。

通过遵循这些步骤,你可以生成和管理安全的 SSH 密钥对,确保你的远程访问既方便又高度安全。

配置 SSH 密钥以实现无缝远程访问

既然你已经生成并管理了 SSH 密钥对,下一步就是配置 SSH 密钥以实现无缝远程访问。此过程涉及在远程系统上设置 authorized_keys 文件,并将本地 SSH 客户端配置为使用相应的密钥。

配置 authorized_keys 文件

远程系统上的 authorized_keys 文件是你需要放置公钥的地方。此文件告知远程系统哪些公钥被允许进行身份验证并访问该系统。

要将你的公钥添加到 authorized_keys 文件中,你可以使用以下命令:

ssh-copy-id -i ~/.ssh/id_rsa.pub user@remote_host

此命令会将你的公钥复制到远程系统上的 authorized_keys 文件中,使你能够无密码登录。

配置 SSH 客户端

为了充分利用基于 SSH 密钥的身份验证,你还可以将本地 SSH 客户端配置为在连接到远程系统时自动使用相应的密钥。你可以通过编辑本地机器上的 ~/.ssh/config 文件来实现。

以下是一个示例配置:

Host example.com
    HostName example.com
    User your_username
    IdentityFile ~/.ssh/id_rsa

此配置告知 SSH 客户端在连接到 example.com 主机时使用 id_rsa 私钥。

通过配置远程系统上的 authorized_keys 文件和本地机器上的 SSH 客户端,你可以简化远程访问过程,并享受安全、无密码身份验证的好处。

总结

SSH 密钥是用于安全远程访问 Linux 系统的强大工具,它提供了更高的安全性、无密码登录和集中管理功能。在本教程中,你已经学习了 SSH 密钥的基础知识,包括它们是什么、有什么好处以及关键术语。你还掌握了生成和管理自己的 SSH 密钥对,并将其配置为实现无缝远程访问的知识。通过将 SSH 密钥纳入你的 Linux 工作流程,你可以提高远程连接的安全性和效率。