Назад | Перейти на главную страницу

Как найти в authorized_keys открытый ключ и удалить его

Здравствуйте, я ищу помощь в поиске /root/.ssh/authorized_keys для данного открытого ключа (назовите его $ pub_key) и удалите его. Хотите сделать это в сценарии bash.

Как лучше всего этого добиться?

Бы grep -v $pub_key /root/.ssh/authorized_keys > /tmp/authorized_keys.new работай? Вы можете сравнить два файла, чтобы проверить работу. Учитывая длинные строки случайных символов, которые составляют ключи, вероятно, достаточно сделать это, используя подстроку $ pub_key.

Я думаю, мне нужно использовать sed, но не могу понять синтаксис, вот что у меня есть:

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

Удалите пробел перед d, он будет работать так, как вы ожидаете:

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

Никогда не забывайте о мощи perl oneliners!

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

Это приведет к редактированию на месте и удалению проблемного ключа.

Или, возможно, у вас действительно очень длинный файл authorized_keys, и вы хотите обрабатывать его параллельно с GNU parallel?

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

возможности безграничны.

update: исправлена ​​опечатка, на которую указал Оле. Спасибо Оле!