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

Pet*_*ner 4 ssh

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

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

这是centos机器上的一个键:

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

这是我在 ubuntu 机器上的已知主机中导入它(通过 ssh 手动接受它)时的样子

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 系统是否期望第一个大块被加密?

Jak*_*uje 5

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

  • 我正在尝试教人们阅读手册页,但到目前为止没有任何进展:) (3认同)