Como procurar authorized_keys para chave pública e removê-lo

5

Olá, estou procurando ajuda pesquisando /root/.ssh/authorized_keys para uma determinada chave pública (chame-a $ pub_key) e removendo-a. Quer fazer isso no script bash.

Qual é a melhor maneira de conseguir isso?

    
por Justin 09.09.2011 / 00:26

3 respostas

9

grep -v $pub_key /root/.ssh/authorized_keys > /tmp/authorized_keys.new funcionaria? Você pode comparar com dois arquivos para verificar o trabalho. Dadas as longas cadeias de caracteres aleatórios que compõem as chaves, provavelmente é suficiente fazer isso usando uma substring de $ pub_key.

    
por 09.09.2011 / 00:35
2

I think I need to use sed, but can't figure out the syntax, here is what I have thus far:

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

Remova o espaço antes de d , ele funcionará conforme o esperado:

sed -i '/$pub_key/d' /root/.ssh/authorized_keys
    
por 09.09.2011 / 04:25
2

Nunca esqueça o poder dos onelinerers perl!

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

Isso executará uma edição no local e removerá a chave incorreta.

Ou talvez você tenha um arquivo authorized_keys realmente longo e queira processá-lo em paralelo com gnu paralelo ?

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

as possibilidades são infinitas.

update: erro de digitação fixo que Ole apontou. Obrigado Ole!

    
por 09.09.2011 / 02:22

Tags