📜  如何在 Linux 中使用 ssh-keygen 生成 SSH 密钥?

📅  最后修改于: 2021-10-28 02:23:33             🧑  作者: Mango

Secure Shell (SSH) 是一种用于安全操作远程服务的加密网络协议。它用于使用通常在端口 22 上运行的客户端-服务器架构对安全通道上的设备进行远程操作。SSH 是 Telnet 的继承者。 SSH 使用公钥和私钥来验证和验证用户。 ssh-keygen 用于生成这些密钥对。

您可以在此处了解有关 SSH 和 Telnet 的更多信息

SSH 是如何工作的?

  • SSH 协议需要有 2 对。公钥和私钥
  • 公钥被添加到远程服务器(或)设备的特殊文件夹 $HOME/.ssh/authorized_keys 中。
  • 当服务器发送任何使用公钥加密的响应时,由于只有客户端拥有私钥,它只能解密响应。
  • 身份验证成功后,将创建一个 shell 会话或在远程服务器上执行请求的命令。

SSH 的工作原理

SSH-KEYGEN

ssh-keygen 是用于生成、管理和转换 SSH 身份验证密钥的实用程序。 ssh-keygen 在大多数操作系统中都随 SSH 一起安装。 ssh-keygen 能够使用三种不同的数字签名算法之一生成密钥。

  • RSA
  • 动态安全协议
  • ECDSA

ssh-keygen 生成的文件

  • $HOME/.ssh/identity:包含使用 SSH 协议版本 1 时的 RSA 私钥的文件。
  • $HOME/.ssh/identity.pub:当您使用 SSH 协议版本时,包含用于身份验证的 RSA 公钥的文件
  • $HOME/.ssh/id_dsa:包含用户的协议版本 2 DSA 身份验证身份的文件。
  • $HOME/.ssh/id_dsa.pub:当您使用 SSH 协议版本时,包含用于身份验证的 DSA 公钥的文件。
  • $HOME/.ssh/id_rsa:包含用户的协议版本 2 RSA 身份验证身份的文件。除了用户之外,任何人都不应读取此文件。
  • $HOME/.ssh/id_rsa.pub:包含用于身份验证的协议版本 2 RSA 公钥的文件。

“.pub”文件应复制到用户想要使用 SSH 身份验证登录的远程系统的 $HOME/.ssh/authorized_keys 文件中。

使用 ssh-keygen 生成密钥对

几乎所有 Unix 和 Linux 发行版都预装了 SSH 和 ssh-keygen,因此我们无需安装。我们将直接开始。这个过程几乎与几乎所有 Linux Distros 的相似

打开终端并输入 ssh-keygen

ssh-keygen

它要求提供 ssh 密钥对的名称。如果您想输入密码,请继续,ssh-keygen 将自动创建您的密钥。

//Output

Generating public/private rsa key pair.

// enter the name for ssh key pairs
Enter file in which to save the key (/home/kushwanth/.ssh/id_rsa): gfg

// enter passpharse for security
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 

// ssh keys generated
Your identification has been saved in gfg
Your public key has been saved in gfg.pub

ssh 密钥生成器已创建

公钥如下所示。

示例公钥

这是您需要复制到远程设备才能成功进行 SSH 身份验证的密钥。

将公钥复制到远程服务器

创建密钥对后,现在我们需要将公钥复制到服务器中。有两种方法可以做到这一点,使用 ssh-copy-id(或)手动将其复制到服务器中。

使用 ssh-copy-id

使用 ssh-copy-id 命令将您的公钥文件(例如,$HOME/.ssh/id_rsa.pub)复制到您在远程服务器上的用户帐户。

手动复制公钥

使用密码登录远程服务器并在 $HOME/.ssh 中创建一个目录。您可以使用下面的命令。

  • ssh @ 允许您登录远程主机服务器
  • 如果 .ssh 目录已经存在,它会将目录的权限设置为 077,以便它允许文件所有者的读取、写入和执行权限,但禁止其他所有人的读取、写入和执行权限。
  • 如果该目录不存在,那么它将创建一个新目录。

现在将您的公钥发送到远程服务器,

  • cat 允许您在终端中打印文件的内容。
  • cat 的输出通过管道传输到 SSH 以将公钥附加到远程服务器。

现在您可以注销并测试是否可以使用 SSH 协议连接到远程服务器。