Linux/Unix ssh-keygen:创建主机密钥文件

时间:2020-01-09 10:40:28  来源:igfitidea点击:

由于无法在Linux/Unix/Apple OS X/* BSD操作系统下为非root帐户使用系统定义的/etc/ssh/ssh_host_rsa_key,因此如何创建用于我的应用程序的主机密钥文件?

解决方法:
您需要使用一个名为" ssh-keygen"的命令。此命令生成,管理和转换ssh的认证密钥。它可以创建供SSH协议版本1使用的RSA密钥,以及供SSH协议版本2使用的RSA或DSA密钥。
要生成的密钥类型由-t选项指定。

如果在不带任何参数的情况下调用ssh-keygen,它将生成一个RSA密钥,用于SSH协议2连接。
-f选项指定密钥文件的文件名。

为什么要创建新的主机密钥文件?

您可能需要一个新的密钥文件:

  • 您的系统已受到威胁。
  • 您的钥匙被盗了。
  • 您忘记了密码。
  • 您的应用程序需要一个新的主机密钥。
  • 您无法读取存储在/etc/ssh /目录中的默认系统密钥文件,但是您的非root用户应用程序需要密钥。
  • 您收到一条错误消息,内容为"无法加载主机密钥:/etc/ssh/ssh_host_key *"。

ssh-keygen语法

语法为:

ssh-keygen -t 'rsa|dsa|rsa1'  -f /path/to/file

例子

如下所示在$HOME/.ssh/myapp中创建一个主机密钥文件。
首先,创建一个目录来存储您的主机密钥文件,执行:

$ mkdir -p $HOME/.ssh/myapp

要创建主机RSAv2密钥文件,请运行:

$ ssh-keygen -t rsa -f $HOME/.ssh/myapp/rsa_key_file

输出示例:

Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/Hyman/.ssh/myapp/rsa_key_file.
Your public key has been saved in /home/Hyman/.ssh/myapp/rsa_key_file.pub.
The key fingerprint is:
73:d0:e9:0a:5d:a3:3f:78:33:5d:0d:fe:e4:f4:25:39 Hyman@wks01
The key's randomart image is:
+--[ RSA 2048]----+
|                 |
|         . .     |
|        . =   .  |
|       . = . . + |
|      . S o   E =|
|       . * . . Bo|
|        o * .   +|
|         . +     |
|                 |
+-----------------+

执行以下命令来验证密钥:

$ ls -l $HOME/.ssh/myapp/

输出示例:

total 8
-rw------- 1 Hyman Hyman 1675 Oct 29 23:12 rsa_key_file
-rw-r--r-- 1 Hyman Hyman  393 Oct 29 23:12 rsa_key_file.pub

现在,您可以在应用程序中使用密钥:

$ mycool-app -key $HOME/.ssh/myapp/rsa_key_file -d