如何在 authorized_keys 中搜索公钥并将其删除

如何在 authorized_keys 中搜索公钥并将其删除

您好,我需要帮助来搜索/root/.ssh/authorized_keys给定的公钥(称为 $pub_key)并将其删除。想在 bash 脚本中执行此操作。

实现这一目标的最佳方法是什么?

答案1

能行吗grep -v $pub_key /root/.ssh/authorized_keys > /tmp/authorized_keys.new?您可以比较两个文件来验证是否可行。考虑到组成密钥的随机字符串很长,使用 $pub_key 的子字符串可能就足够了。

答案2

我想我需要使用 sed,但不明白语法,以下是我目前所得到的:

sed -i '/$pub_key/ d' /root/.ssh/authorized_keys

删除前面的空格d,它将按预期工作:

sed -i '/$pub_key/d' /root/.ssh/authorized_keys

答案3

永远不要忘记 perl 单行命令的威力!

$pub_key="AAAABCD"; perl -i "/$pub_key/ or print" /root/.ssh/authorized_keys

这将执行就地编辑并删除有问题的键。

或者,也许你有一个很长的 authorized_keys 文件,并且你想与gnu并行

pub_key="AAAABCD"; parallel -k "echo {} | grep -v $pub_key" </root/.ssh/authorized_keys

可能性是无止境。

更新:修正了 Ole 指出的拼写错误。谢谢 Ole!

相关内容