使用自己编写的自动化工具通过 scp bash 命令将文件从 ServerA 发送到 ServerB。 ServerB 主机验证需要 SHA-256 指纹。这里确保 ServerA 中的文件将通过指纹 SHA-256 发送到 ServerB 的正确方法是什么?
答案1
如果您只有密钥指纹,而没有公钥本身,则可以向服务器询问其公钥并生成相应的指纹:
ssh-keyscan some.server | ssh-keygen -lf -
然后,您可以在该输出中查找指纹。例子:
% ssh-keyscan github.com | ssh-keygen -lf- | grep -w 'SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8' && echo key matched
# github.com:22 SSH-2.0-babeld-f97ce5b9
# github.com:22 SSH-2.0-babeld-f97ce5b9
# github.com:22 SSH-2.0-babeld-f97ce5b9
2048 SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8 github.com (RSA)
key matched
如果指纹匹配,则将密钥添加到.known_hosts
:
if ssh-keyscan some.server 2>/dev/null | ssh-keygen -lf - | grep -q 'SHA256:somekey'
then
ssh-keyscan some.server >> ~/.ssh/known_hosts
fi