如何手动安装 ssh 的known_host 密钥?

如何手动安装 ssh 的known_host 密钥?

我有一个安全传输系统,我将主机密钥推送到数据库,我尝试安装在 Ubuntu 15 计算机上生成的密钥,并将它们安装在 SLES 11 计算机上,我尝试安装生成的密钥在 Centos 7 机器上 在 Ubuntu 15 机器上。

那么,这些机器是否有一个通用的机制来安装主机密钥,这真的很令人困惑,我想我有点过于谨慎了。一切都应该是自动化的,我找到了一个收集钥匙的好方法,我只是不知道将它们放在机器上的正确位置

这是 centos 机器上的密钥:

[root@centos ~]# cat /etc/ssh/ssh_host_ecdsa_key.pub ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBIl8BT33T4sEAgG56CItPWep/N3IKaUaw8Xy6Fn6k9SLsARi9zZk9FAd6H6DfbIxzkz1sjSjfq1JSVyd3slKf4M=

这是当我将它导入(通过 ssh 手动接受它)到我的 ubuntu 机器上的knownhosts中时的样子

root@ubuntu:/home# cat aaron/.ssh/known_hosts |1|F+Hr+T8eulEpFFFhwdJKdcOg6yQ=|yM/XLEkDPFUWO/g9vPOONBkRvtE= ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBIl8BT33T4sEAgG56CItPWep/N3IKaUaw8Xy6Fn6k9SLsARi9zZk9FAd6H6DfbIxzkz1sjSjfq1JSVyd3slKf4M=

因此,known_hosts 文件中的第一部分看起来是加密的,而在 SLES 计算机上,该部分未加密,因此更简单一些。

所以我的问题是

  1. 我如何得出该加密部分,以便我可以将其回显到known_hosts 文件中?
  2. 我如何知道给定的 Linux 系统是否期望第一个块被加密?

答案1

sshd描述文件格式的手册页:

SSH_KNOWN_HOSTS 文件格式

/etc/ssh/ssh_known_hosts和文件~/.ssh/known_hosts包含所有已知主机的主机公钥。全局文件应由管理员准备(可选),并且自动维护每用户文件:每当用户从未知主机连接时,其密钥都会添加到每用户文件中。

这些文件中的每一行包含以下字段:标记(可选),主机名、位、指数、模数、注释。字段之间用空格分隔。

[...]

交替,主机名可以以散列形式存储如果文件内容被泄露,它会隐藏主机名和地址。哈希主机名以“|”开头特点。一行中只能出现一个散列主机名,并且不能应用上述任何否定或通配符运算符。

只是该部分bits, exponent, modulus现在一起用作公钥。主机名经过哈希处理,但您可以将其写为字符串,然后运行ssh-keygen该文件:

ssh-keygen -H [-f known_hosts_file]

例如ssh-keygen -H -f ~/.ssh/known_hosts

答案2

不强制要求您保持hostname加密状态

192.168.0.105 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBIl8BT33T4sEAgG56CItPWep/N3IKaUaw8Xy6Fn6k9SLsARi9zZk9FAd6H6DfbIxzkz1sjSjfq1JSVyd3slKf4M=

相关内容