Como desfazer um ssh-copy-id?


15

Eu tenho um cluster hadoop de 2 nós.

Eu executei este comando no mestre:

$ssh-copy-id -i /home/hadoop/.ssh/id_rsa.pub hadoop@192.168.1.1

Como posso desfazer isso? Na verdade, eu gostaria de reatribuir a chave.

192.168.1.1 é o escravo.

Respostas:


20

Identifique a chave pública que você copiou ao executar ssh-copy-id:

cat ~/.ssh/id_rsa.pub

SSH para o servidor para o qual você copiou a chave:

ssh hadoop@192.168.1.1

Editar o arquivo ~hadoop/.ssh/authorized_keysem 192.168.1.1usar o seu editor preferido, e apagar a linha que contém a sua chave.


1
Existe uma maneira de fazê-lo mais automaticamente por quê? Comossh-rm-id hadoop@192.168.1.1
SR

@ SR Não conheço um único comando que automatize isso. Em teoria, você pode "automatizá-lo" com um pouco de uma linha, usando sshpara executar um sedcomando (ou similar) para editar ~/.ssh/authorized_keyse remover a linha. Veja superuser.com/questions/429954/…
David Edwards

4

Se você fez algo ssh-copy-idparecido:

remote='user@machine'
ssh-copy-id -i $remote

Assim, você pode acessar esta máquina remota sem usar uma senha:

ssh $remote

Para desfazê-lo de uma maneira sistemática, você pode criar um script como:

idssh=$(awk '{print $2}' ~/.ssh/id_rsa.pub)
ssh $remote "sed -i '#$idssh#d' .ssh/authorized_keys"

Eu o uso em scripts, preciso de scpvários arquivos, então peço apenas uma vez a senha.


1
Isso pode ser um pouco perigoso: você está procurando o campo de comentário da chave. É uma sequência arbitrária sem qualquer significado e pode estar contida mais de uma vez. Eu grep para a AAA....==cadeia longa (a chave real) ou para a linha completa de id_rsa.pub. Mas +1 para mostrar como automatizar a remoção de uma chave.
precisa saber é o seguinte

1
@PerlDuck você está certo. É muito melhor usar a chave ($ 2) do que o terceiro campo. Obrigado.
Javi M.

@Javi M. Encontrei outro problema. A barra usada por padrão como delimitador no sed estava na minha chave pública. Como resultado, achei melhor usar um ponto-e-vírgula como o delimitador sed, pois parece improvável que apareça na chave pública. Para fazer isso, foi necessário primeiro escapar do personagem. Acabei com algo como isto:ssh $remote "sed -i '\;$idssh;{d}' .ssh/authorized_keys"
ccalvert

Aqui estão algumas informações sobre quais caracteres podem terminar em uma chave pública.
ccalvert

Obrigado @ccalvert. Com base no seu comentário sugerido, eu aprovei a edição chris-maes
Javi M.
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.