我如何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
如果我理解正确,并假设你的ssh
onlocalhost
侦听端口 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