¿Cómo deshacer un ssh-copy-id?

15

Tengo un clúster hadoop de 2 nodos.

Ejecuté este comando en el maestro:

$ssh-copy-id -i /home/hadoop/.ssh/id_rsa.pub [email protected]

¿Cómo puedo deshacer esto? De hecho, me gustaría reasignar la clave.

192.168.1.1 es el esclavo

l --''''''--------- '' '' '' '' '' ''
fuente

Respuestas:

20

Identifique la clave pública que copió cuando ejecutó ssh-copy-id:

cat ~/.ssh/id_rsa.pub

SSH al servidor al que copió la clave:

ssh [email protected]

Editar el archivo ~hadoop/.ssh/authorized_keysde 192.168.1.1la utilización de su editor preferido y borrar la línea que contiene su clave.

David Edwards
fuente
1
¿Hay alguna manera de hacerlo más automático por qué? Me gustassh-rm-id [email protected]
SR
@SR No conozco un solo comando que automatice esto. En teoría, podría "automatizarlo" usted mismo con un poco de una línea sshpara ejecutar un sedcomando (o similar) para editar ~/.ssh/authorized_keysy eliminar la línea. Ver superuser.com/questions/429954/…
David Edwards
4

Si has hecho un me ssh-copy-idgusta:

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

Para que pueda acceder a esta máquina remota sin usar una contraseña:

ssh $remote

Para deshacerlo de forma sistemática, puede escribir algo como:

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

Lo uso en scripts que necesito para scpvarios archivos, así que solo pido una vez la contraseña.

Javi M.
fuente
1
Esto puede ser un poco peligroso: está buscando el campo de comentarios de la clave. Es una cadena arbitraria sin ningún significado y puede estar contenida más de una vez. Grep ya sea por la AAA....==cadena larga (la clave real) o por la línea completa de id_rsa.pub. Pero +1 por mostrar cómo automatizar la eliminación de una clave.
PerlDuck
1
@PerlDuck tienes razón. Es mucho mejor usar la clave ($ 2) en sí misma que el tercer campo. Gracias.
Javi M.
@Javi M. Encontré otro problema. La barra diagonal utilizada por defecto como delimitador en sed estaba en mi clave pública. Como resultado, me pareció mejor usar un punto y coma como delimitador de sed, ya que parece poco probable que aparezca en clave pública. Para hacer esto, fue necesario escapar primero del personaje. Terminé con algo como esto:ssh $remote "sed -i '\;$idssh;{d}' .ssh/authorized_keys"
ccalvert
Aquí hay información sobre qué caracteres pueden terminar en una clave pública.
ccalvert
Gracias @ccalvert. Según su comentario sugerido, he aprobado la edición Chris-Maes
Javi M.