Comment annuler un ssh-copy-id?


15

J'ai un cluster hadoop à 2 nœuds.

J'ai exécuté cette commande sur le maître:

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

Comment puis-je annuler cela? Je voudrais en fait réaffecter la clé.

192.168.1.1 est l'esclave.

Réponses:


20

Identifiez la clé publique que vous avez copiée lors de l'exécution ssh-copy-id:

cat ~/.ssh/id_rsa.pub

SSH sur le serveur sur lequel vous avez copié la clé:

ssh hadoop@192.168.1.1

Modifiez le fichier ~hadoop/.ssh/authorized_keysen 192.168.1.1utilisant votre éditeur préféré et supprimez la ligne contenant votre clé.


1
Existe-t-il un moyen de le faire plus automatiquement pourquoi? Commessh-rm-id hadoop@192.168.1.1
SR

@SR Je ne connais pas une seule commande qui automatise cela. En théorie, vous pouvez "automatiser" vous-même avec un petit one-liner en utilisant sshpour exécuter une sedcommande (ou similaire) pour modifier ~/.ssh/authorized_keyset supprimer la ligne. Voir superuser.com/questions/429954/…
David Edwards

4

Si vous avez fait ssh-copy-idcomme:

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

Vous pouvez donc accéder à cette machine distante sans utiliser de mot de passe:

ssh $remote

Pour l'annuler de manière systématique, vous pouvez écrire quelque chose comme:

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

Je l'utilise dans les scripts dont j'ai besoin pour scpplusieurs fichiers, donc je ne demande qu'une seule fois le mot de passe.


1
Cela peut être un peu dangereux: vous recherchez le champ de commentaire de la clé. Il s'agit d'une chaîne arbitraire sans signification et peut être contenue plusieurs fois. Je grep soit pour la longue AAA....==chaîne (la clé réelle) ou pour la ligne complète de id_rsa.pub. Mais +1 pour montrer comment automatiser la suppression d'une clé.
PerlDuck

1
@PerlDuck vous avez raison. Il est préférable d'utiliser la clé (2 $) elle-même que le troisième champ. Je vous remercie.
Javi M.

@Javi M. J'ai rencontré un autre problème. La barre oblique utilisée par défaut comme délimiteur dans sed était dans ma clé publique. En conséquence, j'ai trouvé préférable d'utiliser un point-virgule comme délimiteur sed car il semble peu probable qu'il apparaisse dans la clé publique. Pour ce faire, il fallait d'abord échapper au personnage. Je me suis retrouvé avec quelque chose comme ça:ssh $remote "sed -i '\;$idssh;{d}' .ssh/authorized_keys"
ccalvert

Voici quelques informations sur les personnages qui peuvent se retrouver dans une clé publique.
ccalvert

Merci @ccalvert. Sur la base de votre commentaire suggéré, j'ai approuvé l'édition chris-maes
Javi M.
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.