测试服务器上和 known_hosts 中的 ssh 指纹是否匹配

测试服务器上和 known_hosts 中的 ssh 指纹是否匹配

我有一个问题。我需要一个 bash 脚本,它能匹配 known_hosts 和远程服务器上的 ssh 指纹。以下是我所拥有的:

keyFile=$(mktemp)
ssh-keyscan -H $ip > $keyFile 2> /dev/null
hashRemote=$(ssh-keygen -f $keyFile -H -F $ip | sed -n -r -e 's/^[^#][^ ]+ [^ ]+ ([^ ]+)$/\1/p')
hashLocal=$(ssh-keygen -f ~/.ssh/known_hosts -H -F $ip | sed -n -r -e 's/^[^#][^ ]+ [^ ]+ ([^ ]+)$/\1/p')
rm $keyFile

echo $hashRemote
echo $hashLocal

问题是,输出不一致。known_hosts 的内容取决于所支持的密钥类型。因此,ssh-keygen 的输出如下所示:

# Host 10.0.0.35 found: line 1 type RSA                                                          
|1|H24d9m0xG5zrw6QBkigVjarwTFw=|xpisuvwhtqsNkH0CJ6pYoB/y1G8= ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAB
AQC1Ge/M8bA7nQsbMPy8JmFo6T3Ls2FXR01HyHoW5uwTeW3EoaD39IemRYmkDHLZwlQiLSSrw/kgkHATtQ4pqyg0o5mJoajmw
czUQ78Poavea60OYXJWLh12uZlRjyiu/tQXdHaBI3YwCNnP827t4guvJjpdOAsFgZqfuX9qERGPJMHj0YqRelanB9Za3Fueb9
QsT8wOe/wPCw2YwGapUndcUMoChmN2YRMjRk1JU4DPXiQ56+A2S9V4iP+drZfoK3c3tCdUOVUxCPEwqCraav+viSNq2odVL9F
79jIGxP43TqUcCyMcFU7vGEVshVu7gvUl7KKCMa0wu5pr+Z1X3zUn                                            
# Host 10.0.0.35 found: line 3 type ECDSA                                                        
|1|XdzrIRaJLfushc3efDRkNAJwqcQ=|UUyGx6z6I61mqMVRh/j/5+zs6eA= ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNo
YTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBLvteJqElWirJtA75IuDtvwKIbGfbvdCE+O/6bkFhj6oFlSVZqqecmm+MzRca
aLg30hLxLpO8bxwVxeVY62sDg8=

一种是 RSA,一种是 ECDSA。我的问题是,我能以某种方式匹配 known_hosts 和远程指纹吗?提前谢谢...

相关内容