您好,我需要帮助来搜索/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!