Skip to content

SSH 密钥生成

在这篇文章中

使用 SSH 密钥可以让您避免输入远程用户的密码,并用难以破解的 SSH 密钥取而代之,从而使服务器管理过程更加安全。

信息

SSH 密钥是一种用于在使用 SSH 协议连接到远程服务器时验证用户身份的加密密钥。

SSH 密钥有两种类型:

  1. **公钥**是可以发送到远程服务器用于身份识别的密钥。它用于加密数据,这些数据只能用相应的私钥解密。私钥也可以用于加密数据,然后由公钥解密。

  2. **私钥**是必须在用户本地计算机上保密的密钥。它用于解密使用公钥加密的数据。

要使用 SSH 密钥连接到服务器,您需要在本地计算机上创建一对密钥(公钥和私钥),然后将公钥复制到远程服务器。之后,您就可以在不提供远程用户密码的情况下连接到服务器。通常,私钥在生成时会设置密码,因此在连接时您仍然需要提供该密码。

Linux/MacOS 操作系统的 SSH 密钥生成

创建 SSH 密钥

  1. 通过 SSH 连接到服务器。

  2. 在本地计算机上生成 SSH 密钥。为此,请在终端中运行以下命令:

    ssh-keygen -t rsa
    

    运行命令后,系统将提示您选择密钥的文件名和位置。默认情况下,它存储在 /.ssh/ 目录中,文件名为 id_rsa

    然后,系统将提示您输入密码短语以进一步保护 SSH 连接。您不必输入密码短语:

    Enter file in which to save the key (/root/.ssh/id_rsa):
    Enter passphrase (empty for no passphrase):
    Enter same passphrase again:
    

    密钥的指纹及其图像将显示在终端上:

    The key's randomart image is:
    +---[RSA 3072]----+
    |      .     ..o+=|
    |     . .     o +.|
    |      o . o . o.o|
    |       = o . + oo|
    |      . S . + o o|
    |       . = ..o . |
    |        o ..=o+  |
    |         ..+=Xo+ |
    |         .E=*=Oo |
    +----[SHA256]-----+
    

    您可以使用命令查看已创建的 SSH 密钥:

    • cat ~/.ssh/id_rsa - 查找私钥;
    • cat ~/.ssh/id_rsa.pub - 查找公钥。

    接下来,您需要将公钥添加到服务器。为此,请输入以下命令,将 username 替换为服务器上的用户名,将 ip_address 替换为服务器的 IP 地址:

    ssh-copy-id <username>@<ip_address>
    
    • <username> — 用户名;
    • <ip_address> — 服务器公网 IP 地址。

    输入命令后,系统将提示输入服务器上账户的密码。输入密码后,公钥将被复制到服务器并添加到服务器上的 ~/.ssh/authorised_keys 文件中。

    完成上述步骤后,您需要输入以下命令以使用 SSH 密钥连接到服务器:

    ssh <username>@<ip_address>
    

在 Linux 重装期间创建 SSH 密钥

可以在操作系统重装期间添加 SSH 密钥。为此,在 Invapi 中开始安装新操作系统之前,请在 Reinstall 选项卡中填写 Public ssh key 字段:

备注

有关操作系统重装请求的示例,请参阅 操作系统重装 API 方法

Windows 的 SSH 密钥生成

信息

在 Windows 操作系统上生成 SSH 密钥有两种方法:一种使用 OpenSSH 客户端,另一种使用 PuTTY 客户端。以下是使用任一方法生成密钥的说明。

OpenSSH 客户端

要使用 OpenSSH 客户端生成 SSH 密钥,您需要执行以下步骤:

  1. 检查是否存在 OpenSSH 客户端。为此,请转到 Parameters >> Applications >> Additional Components,并在搜索栏中输入 SSH

    如果未安装客户端,请单击 Add Component 按钮,并使用搜索栏找到它。然后单击 Install 按钮。

    您还可以使用命令行检查 openSSH 客户端:

    ssh -V
    
  2. 打开命令提示符(快捷键 Win+R >> 输入 cmd >> 按 OK),并输入以下命令:

    ssh-keygen
    

    运行命令后,系统将提示您选择密钥的文件名和位置。默认情况下,它存储在 /.ssh/ 目录中,文件名为 id_rsa

    然后,系统将提示您输入密码短语以进一步保护 SSH 连接。这是可选的:

    Enter file in which to save the key (.ssh/id_rsa):
    Enter passphrase (empty for no passphrase):
    Enter same passphrase again:```
    

    密钥的指纹及其图像将显示在终端上:

    The key's randomart image is:
    +---[RSA 3072]----+
    |      .     ..o+=|
    |     . .     o +.|
    |      o . o . o.o|
    |       = o . + oo|
    |      . S . + o o|
    |       . = ..o . |
    |        o ..=o+  |
    |         ..+=Xo+ |
    |         .E=*=Oo |
    +----[SHA256]-----+
    
  3. 要检查生成的密钥,请切换到本地设备上之前指定的目录。例如,C:\Users\user_name\.ssh

PuTTY

  1. 在本地设备上下载并安装 Putty 客户端

  2. Start 菜单运行 puttygen.exe

  3. 选择 RSA 密钥类型并按下 Generate 按钮:

  4. Key Generation 窗口中多次随机移动鼠标,此操作将创建随机噪声:

  5. 若要使用密码保护密钥,请在 Key passphrase 中输入密码,并在 Confirm passphrase 中重复输入。如果不需要额外保护,请将这些字段留空:

    单击 Save Private Key 按钮以保存私钥。

    单击 Save Public Key 按钮将公钥保存到磁盘。此密钥将用于服务器上的身份验证。

  6. 将 SSH 公钥复制到服务器:

    scp </path/to/file> <username>@<ip_address></path/to/destination>
    
    • </path/to/file> — 本地计算机上公钥的完整路径;
    • <username> — 用户名;
    • <ip_address> — 服务器公网 IP 地址;
    • </path/to/destination> — 服务器上存储公钥的路径。

在 Windows 重装期间创建 SSH 密钥

可以在操作系统重装期间添加 SSH 密钥。为此,在 Invapi 中开始安装新操作系统之前,请在 Reinstall 选项卡中填写 Public ssh key 字段:

备注

有关操作系统重装请求的示例,请参阅 操作系统重装 API 方法

删除 SSH 密钥

要删除 SSH 密钥,您必须

  • 打开 authorised_keys 文件,该文件通常位于 /.ssh/ 目录中。您可以使用命令行文本编辑器,如 Vim 或 Nano。
  • 找到包含您要删除的公钥的行。每一行对应一个密钥。
  • authorized_keys 文件中删除包含您要移除的公钥的行。
  • 保存更改并关闭文件。
  • 重启服务器上的 SSH 服务以使更改生效。在大多数情况下,可以使用 sudo service ssh restartsudo systemctl restart sshd 来完成。
  • 检查该密钥是否不再用于 SSH 登录。

备注

如果用户的本地设备上安装了 Windows 操作系统,您还可以找到 known_hosts 文件并删除其中包含相应 SSH 密钥的行

question_mark
Is there anything I can help you with?
question_mark
AI Assistant ×