如何在 Ubuntu 12.04 上设置 SSH 密钥如何在 Ubuntu 12.04 上设置 SSH 密钥如何在 Ubuntu 12.04 上设置 SSH 密钥如何在 Ubuntu 12.04 上设置 SSH 密钥
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

如何在 Ubuntu 12.04 上设置 SSH 密钥

介绍

安全外壳协议(或 SSH)是一种加密网络协议,允许用户通过不安全的网络安全地访问远程计算机。

虽然 SSH 支持基于密码的身份验证,但通常建议您改用 SSH 密钥。 SSH 密钥是一种更安全的登录 SSH 服务器的方法,因为它们不易受到常见的暴力破解密码攻击。

生成 SSH 密钥对会创建两个长字符串:公钥和私钥。您可以将公钥放在任何服务器上,然后使用有权访问私钥的 SSH 客户端连接到服务器。

当公钥和私钥匹配时,SSH 服务器无需密码即可授予访问权限。您可以通过使用可选(但强烈推荐)密码保护私钥来进一步提高密钥对的安全性。

注意:如果您正在寻找有关在您的 DigitalOcean 帐户中设置 SSH 密钥的信息,请参阅我们关于 SSH 密钥的 DigitalOcean 产品文档

第 1 步 — 创建密钥对

第一步是在客户端计算机上创建密钥对。这可能是您的本地计算机。在本地命令行中键入以下命令:

  1. ssh-keygen -t ed25519
Output
Generating public/private ed25519 key pair.

您将看到密钥生成过程已开始的确认信息,系统将提示您提供一些信息,我们将在下一步中讨论这些信息。

注意:如果您使用的是不支持创建 ed25519 密钥对的旧系统,或者您要连接的服务器不支持它们,您应该创建一个强 rsa 改为密钥对:

  1. ssh-keygen -t rsa -b 4096

这会将 -t \type 标志更改为 rsa,并添加 -b 4096 \bits” 标志以创建 4096 位钥匙。

第 2 步 — 指定保存密钥的位置

ssh-keygen 命令的第一个提示将询问您将密钥保存在何处:

Output
Enter file in which to save the key (/home/sammy/.ssh/id_ed25519):

您可以在此处按 ENTER 将文件保存到主目录的 .ssh 目录中的默认位置。

或者,您可以选择另一个文件名或位置,方法是在提示后键入它并按 ENTER。

第 3 步 — 创建密码

ssh-keygen 的第二个也是最后一个提示将要求您输入密码:

Output
Enter passphrase (empty for no passphrase):

是否要使用密码由您决定,但强烈建议您这样做:无论采用何种加密方案,密钥对的安全性仍然取决于其他任何人都无法访问的事实。

如果没有密码的私钥落入未经授权的用户手中,他们将能够登录到您使用相关公钥配置的任何服务器。

使用 ssh-agent 服务可以缓解使用密码短语(输入密码短语)的主要缺点,该服务将临时存储您解锁的密钥并使其可供 SSH 客户端访问。其中许多代理都与您操作系统的本机钥匙串集成,使解锁过程更加无缝。

回顾一下,整个密钥生成过程如下所示:

  1. ssh-keygen -t ed25519
Output
Generating public/private ed25519 key pair. Enter file in which to save the key (/home/sammy/.ssh/id_ed25519): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/sammy/.ssh/id_ed25519 Your public key has been saved in /home/sammy/.ssh/id_ed25519.pub The key fingerprint is: SHA256:EGx5HEXz7EqKigIxHHWKpCZItSj1Dy9Dqc5cYae+1zc sammy@hostname The key's randomart image is: +--[ED25519 256]--+ | o+o o.o.++ | |=oo.+.+.o + | |*+.oB.o. o | |*. + B . . | | o. = o S . . | |.+ o o . o . | |. + . ... . | |. . o. . E | | .. o. . . | +----[SHA256]-----+

公钥现在位于 /home/sammy/.ssh/id_ed25519.pub。私钥现在位于 /home/sammy/.ssh/id_ed25519。

第 4 步 — 将公钥复制到您的服务器

生成密钥对后,就可以将公钥放在您要连接的服务器上了。

您可以使用 ssh-copy-id 命令将公钥复制到服务器的 authorized_keys 文件中。确保替换示例用户名和地址:

  1. ssh-copy-id sammy@your_server_address

命令完成后,您将能够通过 SSH 登录服务器,而无需提示输入密码。但是,如果您在创建 SSH 密钥时设置了密码,则系统会要求您输入密码。这是要求您解密私钥的本地 ssh 客户端,它不是要求密码的远程服务器。

第 5 步 — 禁用基于密码的 SSH 身份验证(可选)

将 SSH 密钥复制到服务器后,您可能希望通过将 SSH 服务器配置为禁用基于密码的身份验证来完全禁止密码登录。

警告:在禁用基于密码的身份验证之前,请确保您可以使用 SSH 密钥成功登录到服务器,并且服务器上没有其他用户使用密码登录。

为了禁用基于密码的 SSH 身份验证,请打开 SSH 配置文件。它通常位于以下位置:

  1. sudo nano /etc/ssh/sshd_config

此命令将在 nano 文本编辑器中打开文件。在文件中找到包含 PasswordAuthentication 的行(如果不存在则创建该行),确保它没有在开头用 # 注释掉该行,并将其更改为 no:

PasswordAuthentication no

完成后保存并关闭文件。在nano中,使用CTRL+O保存,按ENTER确认文件名,然后按CTRL+X出口。

重新加载 sshd 服务以使这些更改生效:

  1. sudo systemctl reload sshd

在退出当前 SSH 会话之前,在另一个终端中建立测试连接以验证您仍然可以连接。

结论

在本教程中,我们创建了一个 SSH 密钥对,将我们的公钥复制到服务器,并(可选)完全禁用基于密码的身份验证。

有关 SSH 和 SSH 服务的更多信息,包括如何设置多因素身份验证,请阅读我们的相关教程:

  • 如何使用 SSH 连接到远程服务器
  • SSH 基础知识:使用 SSH 服务器、客户端和密钥
  • 如何在 Ubuntu 20.04 上为 SSH 设置多重身份验证

©2015-2025 艾丽卡 support@alaica.com