我有一个安全传输系统,我将主机密钥推送到数据库,我正在尝试安装在 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 机器上,该部分未加密,所以它更简单一些。
所以我的问题是
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