如何自动将服务器添加到 known_hosts ?(并且不使用 md5 指纹,因为我的意思是安全方式,请不要发送“自动是/接受”解决方案。我想将所需的凭据从服务器带到机器)
我想自动更新我的 sshknown_hosts
文件以接受新服务器。
我假设,我需要添加服务器的公钥(id_rsa.pub
通过安全通道获得),但我看到的是格式不同(我尝试添加这样的awk '{print "server "$1" "$2}' id_rsa.pub > .ssh/known_hosts
验证失败。请注意,我不想使用 md5由于 md5 中的缺陷导致的指纹)。如果有其他id_rsa.pub
有用的东西,我可以在服务器上运行命令并通过受信任的通道获取结果。(请注意,它不是网络通道(想想将pendrive从一个地方物理带到另一个地方),所以ssh-keyscan
不能解决问题,而且id_rsa.pub是不在服务器上运行的dropbear服务器的密钥,所以只有带有密钥的文件可用,而不是服务器)
该名称id_rsa.pub
看起来像用户的公钥。这与known_hosts
-known_hosts
存储主机密钥无关。顾名思义,主机密钥对主机(即计算机)进行身份验证,而用户密钥对用户进行身份验证。OpenSSH 的主机公钥通常位于/etc
或 中/etc/ssh
,称为ssh_host_rsa_key.pub
.
Dropbear 有一个包含私钥的文件。要提取公钥(以在 Dropbear 和 OpenSSH 之间兼容的格式),请运行
dropbearkey -f /etc/dropbear/dropbear_rsa_host_key -y | sed -n 2p >host_key.pub
Run Code Online (Sandbox Code Playgroud)
我不认为 OpenSSH 带有更新known_hosts
文件的命令。手动完成很容易:
echo "$server_name,$server_ip_address $(cat server_ssh_host_rsa_key.pub)" >>~/.ssh/known_hosts
Run Code Online (Sandbox Code Playgroud)
如果您想散列主机名(以便读取您known_hosts
文件的人无法知道这些服务器的名称——这是一个非常小的隐私增益),请ssh-keygen -H
稍后运行。