7
$ ssh-keygen --help
ssh-keygen: unrecognized option: -
usage: ssh-keygen [-q] [-b bits] [-t dsa | ecdsa | ed25519 | rsa]
              [-N new_passphrase] [-C comment] [-f output_keyfile]
   ssh-keygen -p [-P old_passphrase] [-N new_passphrase] [-f keyfile]
   ssh-keygen -i [-m key_format] [-f input_keyfile]
   ssh-keygen -e [-m key_format] [-f input_keyfile]
   ssh-keygen -y [-f input_keyfile]
   ssh-keygen -c [-P passphrase] [-C comment] [-f keyfile]
   ssh-keygen -l [-v] [-E fingerprint_hash] [-f input_keyfile]
   ssh-keygen -B [-f input_keyfile]
   ssh-keygen -D pkcs11
   ssh-keygen -F hostname [-f known_hosts_file] [-l]
   ssh-keygen -H [-f known_hosts_file]
   ssh-keygen -R hostname [-f known_hosts_file]
   ssh-keygen -r hostname [-f input_keyfile] [-g]
   ssh-keygen -G output_file [-v] [-b bits] [-M memory] [-S start_point]
   ssh-keygen -T output_file -f input_file [-v] [-a rounds] [-J num_lines]
              [-j start_line] [-K checkpt] [-W generator]
   ssh-keygen -s ca_key -I certificate_identity [-h] [-n principals]
              [-O option] [-V validity_interval] [-z serial_number] file ...
   ssh-keygen -L [-f input_keyfile]
   ssh-keygen -A
   ssh-keygen -k -f krl_file [-u] [-s ca_public] [-z version_number]
              file ...
   ssh-keygen -Q -f krl_file file ...

您可能会注意到ssh-keygen -A明显缺少文档。

$ ssh-keygen -A
ssh-keygen: generating new host keys: RSA DSA ECDSA ED25519 

它似乎正在生成(A)所有密钥文件,但我在/root/.ssh/. 只是为了确认一下,我ssh-keygen没有任何选项就跑了,通过所有提示输入,并且我有预期的钥匙。

所以问题是,“到底发生了什么?”

4

3 回答 3

5

这记录在ssh-keygen手册中:

-A

对于不存在主机密钥的每种密钥类型(rsa1、rsa、dsa、ecdsa 和 ed25519),使用默认密钥文件路径、空密码、密钥类型的默认位和默认注释生成主机密钥. 系统管理脚本使用它来生成新的主机密钥。

因此,如果您的系统还没有主机密钥,ssh-keygen -A将创建它们。 重新创建主机密钥将导致您的 SSH 客户端抱怨主机的密钥指纹在您下次连接到机器时已更改,并且...

Are you sure you want to continue connecting (yes/no)? 

(假设您之前已经使用 SSH 成功连接到机器)

于 2018-06-13T16:16:37.467 回答
3

我怀疑被问到的部分问题是 ssh-keygen -A 存储结果的位置,这是我试图问自己的一个问题,并且认为我已经回答了。

通过以普通用户(非 ROOT)身份运行“ssh-keygen -A”命令,您可以相当快速地查看结果存储在系统上的位置:然后权限将阻止您实际重写任何内容:

user> ssh-keygen -A
ssh-keygen: generating new host keys: RSA1 open /etc/ssh/ssh_host_key failed: Permission denied.
Saving the key failed: /etc/ssh/ssh_host_key.
ssh-keygen: generating new host keys: ED25519 open /etc/ssh/ssh_host_ed25519_key failed: Permission denied.
Saving the key failed: /etc/ssh/ssh_host_ed25519_key.

显示系统范围的密钥存储在 /etc/ssh 中。这可以通过 sshd_config 文件进行配置:

user> grep etc/ssh /etc/ssh/sshd_config 
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
于 2018-06-13T15:23:48.337 回答
0

根据我的阅读,该-A选项会生成 (A)ll 默认主机密钥。

主机密钥是用于在 SSH 协议中对计算机进行身份验证的加密密钥。这是来自ssh.com的一个很好的解释

当我通过提示按回车时,文件夹ssh-keygen中生成了一个密钥;~/.ssh/正如我所期待的那样。但是,在运行时ssh-keygen -A,我没有看到~/.ssh/.

在阅读了来自 ssh.com 的帖子后,我发现新铸造的密钥位于/etc/ssh/.

更新:

查看原始问题评论中@Biffen 推荐的 explainshell.com/explain?cmd=ssh-keygen+-A的文档!

于 2018-02-26T13:32:37.740 回答