如何从Linux Shell创建和安装SSH密钥

认真对待网络安全,使用SSH密钥访问远程登录。它们是比密码更安全的连接方式。我们将向您展示如何在Linux中生成、安装和使用SSH密钥。

密码有什么问题?

安全外壳(SSH)是用于登录到远程Linux或类Unix计算机上的用户帐户的加密协议。通常,此类用户帐户使用密码进行保护。登录到远程计算机时,必须提供要登录的帐户的用户名和密码。

密码是保护对计算资源访问的最常用方式。尽管如此,基于密码的安全性确实有其缺陷。人们选择弱密码、共享密码、在多个系统上使用相同的密码等等。

SSH密钥更加安全,一旦设置好,它们就像密码一样易于使用。

是什么使SSH密钥安全?

SSH密钥是成对创建和使用的。这两个密钥是完全链接的,并且在密码上是安全的。一个是你的公钥,另一个是你的私钥。它们与您的用户帐户绑定。如果一台计算机上的多个用户使用SSH密钥,则每个用户都将收到自己的一对密钥。

您的私钥安装在您的主文件夹中(通常),而公钥安装在您需要访问的一台或多台远程计算机上。

您的私钥必须妥善保管。如果其他人可以访问它,那么您的位置就像他们发现了您的密码一样。一个明智的(也是强烈推荐的)预防措施是在您的计算机上使用健壮的口令对您的私钥进行加密。

公钥可以自由共享,不会对您的安全造成任何损害。不可能通过检查公钥来确定私钥是什么。私钥可以加密只有私钥才能解密的消息。

当您发出连接请求时,远程计算机使用其公钥副本创建加密消息。该消息包含会话ID和其他元数据。只有拥有私钥的计算机(您的计算机)才能解密此邮件。

您的计算机访问您的私钥并解密邮件。然后,它将自己的加密消息发送回远程计算机。其中,该加密消息包含从远程计算机接收的会话ID。

远程计算机现在知道您必须是您所说的那个人,因为只有您的私钥才能从它发送到您的计算机的消息中提取会话ID。

确保您可以访问远程计算机

确保您可以远程连接并登录到远程计算机。这证明您的用户名和密码在远程计算机上设置了有效的帐户,并且您的凭据是正确的。

在确认可以使用带有密码的SSH连接到目标计算机之前,不要尝试对SSH密钥执行任何操作。

在此示例中,拥有名为Dave的用户帐户的用户登录到名为Howtogeek的计算机。他们将连接到另一台名为Sulaco的计算机。

他们输入以下命令:

ssh dave@sulaco

他们被要求提供密码,他们输入密码,然后他们就连接到了Sulaco。他们的命令行提示符会更改以确认这一点。

这就是我们需要的全部确认。因此,用户Dave可以使用exit命令断开与Sulaco的连接:

exit

他们收到断开消息,命令行提示符返回到dave@Howtogeek。

相关:如何从Windows、MacOS或Linux连接到SSH服务器

创建一对SSH密钥

这些说明在Linux的Ubuntu、Fedora和Manjaro发行版上进行了测试。在所有情况下,该过程都是相同的,并且不需要在任何测试机器上安装任何新软件。

要生成SSH密钥,请键入以下命令:

ssh-keygen

生成过程开始。系统将询问您希望将SSH密钥存储在何处。按Enter键接受默认位置。该文件夹的权限将保护它,仅供您使用。

现在将要求您提供密码短语。我们强烈建议您在此处输入密码。记住这是什么!您可以按Enter键不使用密码,但这不是一个好主意。由三四个互不相连的单词组成的密码短语,串在一起就是一个非常结实的密码短语。

系统将要求您再次输入相同的密码,以验证您输入的内容是否与您认为输入的内容相同。

系统会为您生成并存储SSH密钥。

您可以忽略显示的“随机艺术”。某些远程计算机可能会在您每次连接时向您显示它们的随机图片。其想法是,您将识别随机ART是否更改,并对连接持怀疑态度,因为这意味着该服务器的SSH密钥已被更改。

安装公钥

我们需要在远程计算机Sulaco上安装您的公钥,以便它知道公钥属于您。

我们使用ssh-copy-id命令完成此操作。此命令与常规ssh命令一样连接到远程计算机,但它不允许您登录,而是传输公共SSH密钥。

ssh-copy-id dave@sulaco

虽然您没有登录到远程计算机,但您仍然必须使用密码进行身份验证。远程计算机必须标识新SSH密钥属于哪个用户帐户。

请注意,您必须在此处提供的密码是您正在登录的用户帐户的密码。这不是您刚刚创建的密码。

验证密码后,ssh-copy-id会将您的公钥传输到远程计算机。

您将返回到计算机的命令提示符。您没有继续连接到远程计算机。

使用SSH密钥进行连接

让我们按照建议操作,并尝试连接到远程计算机。

ssh dave@sulaco

因为连接过程将需要访问您的私钥,并且您在密码后面保护了SSH密钥,所以您需要提供您的密码才能继续连接。

输入您的密码,然后单击解锁按钮。

在终端会话中输入密码短语后,只要终端窗口处于打开状态,您就不必再次输入密码。您可以根据需要连接和断开任意多个远程会话,而无需再次输入密码。

您可以勾选“每当我登录时自动解锁此密钥”选项的复选框,但这会降低您的安全性。如果您的计算机无人值守,任何人都可以连接到拥有您的公钥的远程计算机。

输入密码短语后,即可连接到远程计算机。

要再次端到端验证该过程,请使用exit命令断开连接,然后从同一终端窗口重新连接到远程计算机。

ssh dave@sulaco

您将无需密码或口令短语即可连接到远程计算机。

没有密码,但增强了安全性

网络安全专家谈到了一种叫做安全摩擦的东西。这是您需要忍受的小痛苦,以获得更高的安全性。通常需要额外的一两个步骤才能采用更安全的工作方法。而且大多数人都不喜欢这样。他们实际上更喜欢更低的安全性和更少的摩擦。这是人类的本性。

使用SSH密钥,您可以获得更高的安全性和便利性。这绝对是双赢。

相关文章