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 [email protected]

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

192.168.1.1 est l'esclave.

l --''''''---------------- '' '' '' '' '' '' '
la source

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 [email protected]

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

David Edwards
la source
1
Existe-t-il un moyen de le faire plus automatiquement pourquoi? Commessh-rm-id [email protected]
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.

Javi M.
la source
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.