如何从 localhost 获取 SSH 主机密钥“known_hosts”值?

如何从 localhost 获取 SSH 主机密钥“known_hosts”值?

我如何ssh-keyscan -H externalIpExample直接从本地主机生成该值(无需网络访问?)

我有两个公钥(在一台特定主机上)/etc/ssh- 它们是否都适用?

ls /etc/ssh/*.pub
/etc/ssh/ssh_host_ed25519_key.pub
/etc/ssh/ssh_host_rsa_key.pub

答案1

如果我理解正确,并假设你的sshonlocalhost侦听端口 22,那么:

awk '{print "[localhost]:22 " $1 " " $2}' /etc/ssh/ssh_host_ecdsa_key.pub

将打印该known_hosts条目。请注意,某些 ssh 实现会混淆 中的条目~/.ssh/known_hosts,而上面的命令不会。

# awk '{print "[localhost]:22 " $1 " " $2}' /etc/ssh/ssh_host_ecdsa_key.pub
[localhost]:22 ecdsa-sha2-nistp256 AAAAE2............g7vPmspiyg=

答案2

这个问题有点模棱两可,但如果你想从你已经有 shell 访问权限的机器上检索 ssh 主机公钥,那么(假设你使用的是类似 borne 的 shell),通常这样的东西会很有用:

ssh-keyscan `hostname -f` -H

...但是根据您的用例以及您想要如何引用主机,那么您可能更愿意替换hostname或使用特定的 IP 地址hostname -f

相反,如果您想从known_hosts 文件中查找以前记录的主机密钥条目,您可以使用类似以下内容的内容:

ssh-keygen -F name.or.ip.address.of.remote.host -f  ~/.ssh/known_hosts

相关内容