据我所知,ssh-keygen 用于生成私钥和公钥。但是sshd-keygen有什么用呢?
我没有找到手册页或文档,因此没有关于 sshd-keygen 使用的文档。
[root@intel-chiefriver-02 ~]# whereis sshd-keygen
sshd-keygen: /usr/sbin/sshd-keygen
[root@intel-chiefriver-02 ~]# cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)
答案1
/usr/libexec/openssh/sshd-keygen
Fedora 里有openssh-server-7.9p1-5.fc30.x86_64.rpm。这是创建主机密钥的脚本。有一个与之配套的 systemd 服务,[email protected]
.
ssh-keygen
该服务检查特定主机密钥是否不存在,并运行仅调用以创建它们的脚本。因此,如果主机密钥不存在或被删除,它们会在下次需要时重新生成。
sshd-keygen
Fedora wiki 中也提到了更改/删除 slogin 和 sshd-keygen。
它提到删除“sshd-keygen,一个遗留的 Fedora 初始化脚本”(并将其替换为适当的 systemd 服务),并提到“需要确保 ssh 主机密钥可用的应用程序/服务”。
您的实现可能不同,但我想可以肯定地说它是出于相同的目的。
答案2
SSH 服务器本身有一个密钥,用于向客户端标识自己的身份。这是为了防止中间人攻击等。也是为什么你会看到类似的内容
The authenticity of host '[foo.example.com]:22 ([10.0.2.15]:22)' can't be established.
ECDSA key fingerprint is SHA256:QOCUzNedwfepPHZ8JOn7xfGc1zQ8MmIohNCAE93jMEQ.
Are you sure you want to continue connecting (yes/no)?
第一次使用 ssh/scp/sftp 连接远程主机
服务器上这些密钥的实际文件应位于/etc/ssh
-
ssh_host_dsa_key
ssh_host_dsa_key.pub
ssh_host_ecdsa_key
ssh_host_ecdsa_key.pub
ssh_host_ed25519_key
ssh_host_ed25519_key.pub
ssh_host_rsa_key
ssh_host_rsa_key.pub