Como Ignatio sugeriu, isso pode ser feito com grep -v
.
Aqui está um exemplo que remove a chave contendo some unique string
ou apenas exclui o arquivo authorized_keys
quando nenhuma outra chave permanece.
if test -f $HOME/.ssh/authorized_keys; then
if grep -v "some unique string" $HOME/.ssh/authorized_keys > $HOME/.ssh/tmp; then
cat $HOME/.ssh/tmp > $HOME/.ssh/authorized_keys && rm $HOME/.ssh/tmp;
else
rm $HOME/.ssh/authorized_keys && rm $HOME/.ssh/tmp;
fi;
fi
Substitua some unique string
por algo que exista apenas na chave que você deseja remover.
Como um oneliner sobre o ssh, isso se torna
ssh hostname 'if test -f $HOME/.ssh/authorized_keys; then if grep -v "some unique string" $HOME/.ssh/authorized_keys > $HOME/.ssh/tmp; then cat $HOME/.ssh/tmp > $HOME/.ssh/authorized_keys && rm $HOME/.ssh/tmp; else rm $HOME/.ssh/authorized_keys && rm $HOME/.ssh/tmp; fi; fi'
Testado no Linux (SLES) e no HP-UX.