¿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 hadoop@192.168.1.1

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

192.168.1.1 es el esclavo

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 hadoop@192.168.1.1

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.


1
¿Hay alguna manera de hacerlo más automático por qué? Me gustassh-rm-id hadoop@192.168.1.1
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.


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.
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.