Як запропонував Ігнатіо, це можна зробити grep -v
.
Ось приклад, який видаляє ключ, що містить some unique string
або просто видаляє authorized_keys
файл, коли не залишається жодного іншого ключа.
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
Замініть some unique string
те, що існує лише в ключі, який ви бажаєте видалити.
Як лінійка над ssh це стає
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'
Тестується на Linux (SLES) та HP-UX.