Come annullare un ssh-copy-id?


15

Ho un cluster hadoop a 2 nodi.

Ho eseguito questo comando sul master:

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

Come posso annullare questo? In realtà vorrei riassegnare la chiave.

192.168.1.1 è lo schiavo.

Risposte:


20

Identifica la chiave pubblica che hai copiato durante l'esecuzione ssh-copy-id:

cat ~/.ssh/id_rsa.pub

SSH sul server in cui è stata copiata la chiave per:

ssh hadoop@192.168.1.1

Modificare il file ~hadoop/.ssh/authorized_keyssul 192.168.1.1usando il vostro editor preferito, ed eliminare la riga contenente la chiave.


1
C'è un modo per farlo in modo più automatico, perché? Mi piacessh-rm-id hadoop@192.168.1.1
SR,

@SR Non sono a conoscenza di un singolo comando che automatizza questo. In teoria, potresti "automatizzarlo" da solo con un piccolo one-liner usando sshper eseguire un sedcomando (o simile) per modificare ~/.ssh/authorized_keyse rimuovere la linea. Vedi superuser.com/questions/429954/…
David Edwards,

4

Se hai fatto un ssh-copy-idlike:

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

Quindi puoi accedere a questa macchina remota senza usare una password:

ssh $remote

Per annullarlo in modo sistematico, puoi scrivere qualcosa come:

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

Lo uso negli script di cui ho bisogno per scpdiversi file, quindi chiedo solo una volta la password.


1
Questo potrebbe essere un po 'pericoloso: stai cercando il campo di commento della chiave. È una stringa arbitraria senza alcun significato e può essere contenuta più di una volta. Vorrei grep per la AAA....==stringa lunga (la chiave effettiva) o per la riga completa da id_rsa.pub. Ma +1 per mostrare come automatizzare la rimozione di una chiave.
PerlDuck,

1
@PerlDuck hai ragione. È molto meglio usare la chiave ($ 2) stessa rispetto al terzo campo. Grazie.
Javi M.,

@Javi M. Ho riscontrato un altro problema. La barra in avanti usata di default come delimitatore in sed era nella mia chiave pubblica. Di conseguenza, ho trovato meglio usare un punto e virgola come delimitatore sed poiché è improbabile che appaia in chiave pubblica. Per fare questo, è stato necessario prima sfuggire al personaggio. Ho finito con qualcosa del genere:ssh $remote "sed -i '\;$idssh;{d}' .ssh/authorized_keys"
ccalvert,

Ecco alcune informazioni su quali personaggi possono finire in una chiave pubblica.
ccalvert,

Grazie @ccalvert. Sulla base del tuo commento suggerito, ho approvato l'edizione chris-maes
Javi M.
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.