怎样使用私钥在没有密码的情况下登录 SSH?

私钥允许用户无需密码即可登录 SSH。 在某些情况下,这被认为是一种安全的做法,同时也不需要记住多个密码。

在本教程中,我们将学习怎样在本地机器上生成我们自己的 SSH 密钥对,然后在尝试通过 SSH 连接时将我们的服务器配置为使用相同的进行身份验证。

目录

无需密码即可登录 SSH 的步骤

让我们逐步回顾一下无需密码即可登录 SSH 的过程。 如果您是新手,可以首先阅读有关怎样使用 SSH 连接到远程主机的更多信息。 如果你准备好了,让我们开始吧。

步骤 1:生成 SSH 密钥对

在我们的本地机器上,我们可以使用以下命令生成 SSH 密钥对:

$ ssh-keygen

执行时,系统会提示我们指定一个文件来保存私钥,默认为 /home/user/.ssh/id_rsa ; 这里 id_rsa 是我们的私钥文件的名称。 您始终可以为私钥文件指定不同的路径和名称。 对于我们的演示,我们将使用默认配置。

第 2 步:提供密码(可选)

接下来,我们会看到一个提示,要求我们输入一个密码短语,该密码短语可用于保护 SSH 私钥免遭未经授权的访问。

Enter passphrase (empty for no passphrase)

但是,此字段是可选的,如果留空,它将在没有任何保护的情况下存储私钥文件。 在我们的 example,我们将此字段留空。 在此之后,我们将成功生成我们的密钥对。 我们还会看到我们不需要保存的密钥的“指纹”和“视觉指纹”。

Generating public/private rsa key pair.
Enter file in which to save the key (/home/whokilleddb/.ssh/id_rsa): Enter passphrase (empty for no passphrase): 
Enter the same passphrase again: 
Your identification has been saved in /home/whokilleddb/.ssh/id_rsa
Your public key has been saved in /home/whokilleddb/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:iMVnsWXvpuKMbP/icjdwv9AjqKWpeknqNHqkXV7gs9o [email protected]
The key's randomart image is:
+---[RSA 3072]----+
|        . o      |
|     .   = .     |
|      o +   .    |
|    .o +   .     |
|   .... S   o    |
|  . = . ...+     |
| +o= =  +o+.o    |
|.o+o=.oOo.oo..   |
|.o++Eo*==+....   |
+----[SHA256]-----+

第 3 步:配置服务器以使用我们的私钥

此时,我们应该在 /home/user/.ssh 下有以下两个文件:

$ ls -l /home/user/.ssh
-rw------- 1 user user 2610 Feb  7 15:11 id_rsa
-rw-r--r-- 1 user user  573 Feb  7 15:11 id_rsa.pub
  • id_rsa : 我们的 SSH 私钥
  • id_rsa.pub : 我们的 SSH 公钥

记下私钥的权限( id_rsa )。 SSH 私钥文件应该 总是有 600 个权限! 如果没有,请使用 chmod 命令将其权限更改为所述值:

$ chmod 600 /home/user/.ssh/id_rsa

接下来,我们需要配置我们的服务器以使用我们的私钥进行登录。 现在这可以通过登录服务器并手动配置来手动完成,但有一个工具 ssh-copy-id 这为我们做了所有艰苦的工作!

因此,要将我们的服务器配置为使用我们的私钥,只需运行:

$ ssh-copy-id [email protected]

这里,

  • USER 是我们要登录到服务器的用户名
  • IP是我们服务器的IP地址

有了这个,我们现在可以简单地通过 SSH 连接到我们的服务器:

$ ssh [email protected]

如果您之前指定了密码,您将收到要求相同的提示:

Enter passphrase for key '/home/user/.ssh/id_rsa' : 

请注意,如果您不使用默认路径和文件名,则需要使用 -一世 标志如下:

$ ssh -i /path/to/private/key [email protected]

因此,我们成功地使用我们的 SSH 连接到我们的机器 私钥

结论

有了这个,我们就可以在我们的 Linux 机器上不用密码登录到 SSH。 这是一种简单且更安全的登录方式,因为它会锁定您从特定 IP 地址登录。 如果您有兴趣了解有关 Linux 主题的更多信息,请继续关注 LinuxForDevices。

相关阅读:

Posted in: Linux