如何在 Linux 中设置 SSH 密钥

LinuxLinuxBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

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


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/UserandGroupManagementGroup(["User and Group Management"]) linux(("Linux")) -.-> linux/RemoteAccessandNetworkingGroup(["Remote Access and Networking"]) linux(("Linux")) -.-> linux/PackagesandSoftwaresGroup(["Packages and Softwares"]) linux/UserandGroupManagementGroup -.-> linux/env("Environment Managing") linux/RemoteAccessandNetworkingGroup -.-> linux/ssh("Secure Connecting") linux/RemoteAccessandNetworkingGroup -.-> linux/scp("Secure Copying") linux/RemoteAccessandNetworkingGroup -.-> linux/sftp("Secure File Transferring") linux/PackagesandSoftwaresGroup -.-> linux/openssl("OpenSSL") subgraph Lab Skills linux/env -.-> lab-409915{{"如何在 Linux 中设置 SSH 密钥"}} linux/ssh -.-> lab-409915{{"如何在 Linux 中设置 SSH 密钥"}} linux/scp -.-> lab-409915{{"如何在 Linux 中设置 SSH 密钥"}} linux/sftp -.-> lab-409915{{"如何在 Linux 中设置 SSH 密钥"}} linux/openssl -.-> lab-409915{{"如何在 Linux 中设置 SSH 密钥"}} end

了解 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 "[email protected]"

此命令将生成一个 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 工作流程,你可以提高远程连接的安全性和效率。