我想检查我的 known_hosts 中的所有 base64 编码数据。我有一个软件抱怨有一个非法字符,但我不知道在哪一行。我的 known_hosts 文件中有 270 行。
我注意到大多数行都有 3 个不同的 base64 字符串。
例如:
|1|SL7caYOIyaf6J+E6tMk3mRnyjBg=|3sXYrq/40lXL1XTnB1NLM9OxuBY= ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBNQdXDs17bJoXeu3VnDu5btlSY3qqDPhMlixQl/J0BCTvIwY9Z/ggO+XLzWeSBBoEMEHlHZhgJ6MvtH9pBZ7wlY=
我知道我可以用base64检查
echo "SL7caYOIyaf6J+E6tMk3mRnyjBg=" | base64 --decode
但是我如何检查每行的所有 3 个字符串?
答案1
我使用这三个命令检查了该文件:
cat ~/.ssh/known_hosts | awk -F '|' '{print $3}' | base64 --decode | grep 'invalid input'
cat ~/.ssh/known_hosts | awk -F ' ' '{print $1}' | awk -F '|' '{print $4}' | base64 --decode | grep 'invalid input'
cat ~/.ssh/known_hosts | awk -F ' ' '{print $3}' | base64 --decode | grep 'invalid input'
如果它们未返回任何内容,则所有 base64 字符串都是正确的。
我注意到有些行以以下内容开头:
domain.com ssh-rsa AAAAB3NzaC1yc2EAAAADAQABA..
代替:
|1|SL7caYOIyaf6J+E6tMk3mRnyjBg=|3sXYrq/40lXL1XTnB1NLM9OxuBY=
在我删除所有这些行之后,一切正常。