Como Ignatio sugirió, esto se puede hacer con grep -v
.
Aquí hay un ejemplo que elimina la clave que contiene some unique string
o simplemente elimina el authorized_keys
archivo cuando no queda otra clave.
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
Reemplace some unique string
con algo que solo existe en la clave que desea eliminar.
Como una línea sobre ssh esto se convierte
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'
Probado en Linux (SLES) y HP-UX.