ssh-keyscan:如何确认请求和收到的公钥确实是真实的?

ssh-keyscan:如何确认请求和收到的公钥确实是真实的?

在里面服务器存在于/etc/ssh/目录文件中,例如:

ssh_hosts_rsa_key.pub
ssh_hosts_ecdsa_key.pub
ssh_hosts_ed25519_key.pub

它们包含符合密钥类型的公钥,例如rsaecdsa

如果在客户执行以下命令:

# Retrieve and Show all the public keys content
ssh-keyscan 192.168.1.X

# Retrieve all the public keys content and Show the fingerprint of them 
ssh-keyscan 192.168.1.X | ssh-keygen -lf -

输出分别是public keysfingerprint

观察

  • 通过命令显示的数据ssh-keyscan来自/etc/ssh服务器中目录中的可用文件

忧虑

  • 我在网上读到,服务器可以被假冒的服务器替换,或者客户端/服务器之间的通信可以被拦截,从而受到损害

因此,即使执行以下命令:

ssh-keyscan [-H] 192.168.1.X >> ~/home/<username>/public_keys

哪里public_keys有一个自定义文件,用于保存从服务器接收的数据并在以后进行验证/分析。所以 ...

问题

  • 如何确认公钥通过命令询问和收到的信息ssh-keygen真的是真实的吗?

目的是避免执行

ssh-keyscan [-H] 192.168.1.X >> ~/.ssh/known_hosts

并在文件中添加受污染的数据~/.ssh/known_hosts,最后将关键数据发送到虚假目的地,从公钥客户本身。

我认为服务器中的管理员会向客户端共享这些.pub文件,它通过

  • 通过电子邮件
  • 通过 ftp 访问

因此客户可以:

  • 使用上述public_keys文件与文件内容进行简单比较.pub。应该相等
  • 使用ssh-keygen带有选项的命令直接-lvf生成文件并与命令进行快速比较。也应该相等fingerprint.pubssh-keyscan 192.168.1.X | ssh-keygen -lf -

乍一看,这将是最明显的方法,也许对于“小型”LAN/WAN 来说是有意义的,但假设管理员由于任何政策而不想共享这些文件......如何回答我的问题? - 当然,另一个最糟糕的情况是管理员的电子邮件/FTP 也受到损害。

相关内容