$ 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)ll的密钥文件,但我在/root/.ssh/
中看不到任何密钥。只是为了确认,我运行ssh-keygen
没有任何选项,通过所有提示输入,我按预期获得了密钥。
所以问题是,“到底发生了什么?”
答案 0 :(得分:1)
这在ssh-keygen
手册中有记载:
-A
对于不存在主机密钥的每种密钥类型(rsa1,rsa,dsa,ecdsa和ed25519),生成具有默认密钥文件路径的主机密钥,为空 密码短语,密钥类型的默认位和默认注释。系统管理脚本使用它来生成新的主机密钥。
因此,如果您的系统还没有主机密钥,ssh-keygen -A
将创建它们。 重新创建主机密钥会导致SSH客户端抱怨下次连接到计算机时主机的密钥指纹已经更改,并且...
Are you sure you want to continue connecting (yes/no)?
(假设您之前已使用SSH成功连接到计算机)
答案 1 :(得分: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文档!
答案 2 :(得分:0)
我怀疑问题的一部分是ssh-keygen -A存储结果的地方,我试图问自己的一个问题,并且认为我已经回答了。
通过以普通用户身份运行“ssh-keygen -A”命令(NOT ROOT),您可以非常快速地查看结果存储在系统中的位置:然后权限将阻止您实际重写任何内容:
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