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

Linux笔记本电脑显示shell提示Fatmawati Achmad Zaenuri / Shutterstock.com

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

密码有什么问题?

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

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

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

什么使SSH密钥安全?

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

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

您的私钥必须保持安全。如果其他人可以访问,则您处于与发现密码相同的位置。一个明智且强烈推荐的预防措施是使用强大的密码在您的计算机上加密您的私钥。

公钥可以自由共享,不会影响您的安全性。不可能通过检查公钥来确定私钥是什么。私钥可以加密只有私钥才能解密的消息。

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

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

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

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

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

在验证可以使用带密码的SSH连接到目标计算机之前,请不要尝试使用SSH密钥。

在此示例中,具有用户帐户的人员被调用 戴夫 登录到名为的计算机 howtogeek 。他们将连接到另一台名为的计算机 Sulaco

他们输入以下命令:

ssh dave @ sulaco

ssh dave @ sulaco在终端窗口

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

用户dave使用ssh和密码连接到sulaco

这就是我们需要的所有确认。所以用户 戴夫 可以断开连接 Sulaco 随着 出口 命令:

出口

用户dave与sulaco断开连接

他们收到断开连接消息,并返回其命令行提示符 戴夫@ howtogeek

有关: 如何从Windows,macOS或Linux连接到SSH服务器

创建一对SSH密钥

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

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

SSH-凯基

终端窗口中的ssh-keygen

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

确认终端窗口中的ssh密钥存储位置

现在将要求您输入密码。我们强烈建议您在此处输入密码。并记住它是什么!你可以按Enter键没有密码短语,但这不是一个好主意。由连接在一起的三个或四个未连接的单词组成的密码短语将构成一个非常强大的密码短语。

在终端窗口中提示密码短语

系统会要求您再次输入相同的密码来验证您是否输入了您认为键入的内容。

将为您生成并存储SSH密钥。

密钥生成已完成,随机艺术显示在终端窗口中

您可以忽略显示的“randomart”。有些远程计算机可能会在每次连接时向您显示其随机艺术。我们的想法是,您将识别随机艺术是否发生变化,并对连接产生怀疑,因为这意味着该服务器的SSH密钥已被更改。

安装公钥

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

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

ssh-copy-id dave @ sulaco

ssh-copy-id dave @ sulaco

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

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

带有密码提示的ssh-copy-id在终端窗口中

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

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

pulic密钥在终端窗口中成功传输

使用SSH密钥连接

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

ssh dave @ sulaco

ssh dave @ sulaco在终端窗口

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

密码短语请求对话框

输入您的密码并单击“解锁”按钮。

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

您可以勾选“我每次登录时自动解锁此密钥”选项的复选框,但这会降低您的安全性。如果将计算机置于无人看管状态,则任何人都可以与具有公钥的远程计算机建立连接。

输入密码后,即表示您已连接到远程计算机。

连接远程计算机在终端窗口中

要再次端到端地验证该过程,请断开连接 出口 命令并从同一终端窗口重新连接到远程计算机。

ssh dave @ sulaco

在终端窗口中进行ssh密钥连接和断开连接

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

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

网络安全专家谈论一种称为安全摩擦的事情。这是您需要忍受的轻微痛苦,以获得额外的安全性。通常采用更安全的工作方法需要额外的一两步。大多数人都不喜欢它。他们实际上更喜欢较低的安全性和缺乏摩擦力。那是人性。

使用SSH密钥,您可以提高安全性并增加便利性。这是一个明确的双赢。

body #primary .entry-content ul#nextuplist list-style-type:none; margin-left:0px; padding-left:0px;
body #primary .entry-content ul#nextuplist li a text-decoration:none; color:#1d55a9;

请阅读下一步

  • >您可以在Outlook中撤消发送,就像Gmail一样
  • >走向病毒通常是获得良好客户服务的唯一途径
  • >如何观看2019年美国网上开放(无线)
  • > Windows 10的Linux内核现已推出
  • >如何将Android文件无线传输到Linux桌面
本文机器自动生成,不保证语句完整通顺和表达准确,亦不对内容真实有效性负责,请读者知悉。