如何在 Ubuntu 12.04 上设置 SSH 密钥

介绍

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

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

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

当公钥和私钥相匹配时,SSH服务器允许访问,而无需密码. 您可以通过使用可选(但强烈建议)密码来保护私钥来进一步提高密钥对的安全性。

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

步骤 1 - 创建关键对

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

1[environment local]
2ssh-keygen -t ed25519
1[secondary_label Output]
2[environment local]
3Generating public/private ed25519 key pair.

您将看到确认关键生成过程已经开始,并将提示您一些信息,我们将在下一步讨论。

<$>[注] 注: 如果您在较旧的系统中不支持创建ed25519密钥对,或者您正在连接的服务器不支持它们,您应该创建一个强大的rsa密钥对:

1ssh-keygen -t rsa -b 4096

这将t``类型的旗帜更改为rsa,并添加b 4096``bits的旗帜来创建一个4096位的密钥。

步骤 2 – 指定存储密钥的位置

「ssh-keygen」命令的第一個提示會問你在哪裡儲存鑰匙:

1[secondary_label Output]
2[environment local]
3Enter file in which to save the key (/home/sammy/.ssh/id_ed25519):

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

或者,您可以选择另一个文件名称或位置,通过在提示后键入它并点击ENTER

步骤 3 – 创建一个 Passphrase

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

1[secondary_label Output]
2[environment local]
3Enter passphrase (empty for no passphrase):

您是否想要使用密码是由您决定的,但强烈鼓励:密钥对的安全性,无论加密方案如何,仍然取决于它不能被其他人访问。

如果一个没有密码的私钥落入未经授权的用户的所有权,他们将能够登录任何您已配置的服务器与相关的公共密钥。

拥有一个密码的主要缺点 - 输入它 - 可以通过使用一个ssh代理服务来缓解,这将暂时存储您的解锁密钥,并使其可访问到SSH客户端。

要总结一下,整个关键生成过程看起来是这样的:

1[environment local]
2ssh-keygen -t ed25519
 1[secondary_label Output]
 2[environment local]
 3Generating public/private ed25519 key pair.
 4Enter file in which to save the key (/home/sammy/.ssh/id_ed25519):
 5Enter passphrase (empty for no passphrase):
 6Enter same passphrase again:
 7Your identification has been saved in /home/sammy/.ssh/id_ed25519
 8Your public key has been saved in /home/sammy/.ssh/id_ed25519.pub
 9The key fingerprint is:
10SHA256:EGx5HEXz7EqKigIxHHWKpCZItSj1Dy9Dqc5cYae+1zc sammy@hostname
11The key's randomart image is:
12+--[ED25519 256]--+
13| o+o o.o.++      |
14|=oo.+.+.o  +     |
15|*+.oB.o. o    |
16|*. + B .   .     |
17| o. = o S . .    |
18|.+ o o . o .     |
19|. + . ... .      |
20|.  . o. . E      |
21| .. o.   . .     |
22+----[SHA256]-----+

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

步骤 4 – 将公共密钥复制到您的服务器

一旦生成密钥对,是时候将公共密钥放置在您想要连接的服务器上。

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

1[environment local]
2ssh-copy-id sammy@your_server_address

一旦命令完成,您将能够通过SSH登录服务器,而无需请求密码。但是,如果您在创建SSH密钥时设置了密码,您将被要求在那个时候输入密码。

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

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

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

若要禁用基于密码的 SSH 身份验证,请打开 SSH 配置文件。

1sudo nano /etc/ssh/sshd_config

这个命令将打开文本编辑器中的nano文件,在文件中找到包含PasswordAuthentication的行(或创建行,如果它不存在),确保它没有被评论为#在行开始时,并将其更改为:

1[label /etc/ssh/sshd_config]
2PasswordAuthentication no

nano中,使用CTRL+O来保存,按ENTER来确认文件名,然后按CTRL+X来退出。

重新加载sshd服务以实施这些更改:

1sudo systemctl reload sshd

在退出当前 SSH 会话之前,在其他终端进行测试连接,以验证您仍然可以连接。

结论

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

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

Published At
Categories with 技术
comments powered by Disqus