Wie mache ich eine ssh-copy-id rückgängig?

15

Ich habe einen 2-Knoten-Hadoop-Cluster.

Ich habe diesen Befehl auf dem Master ausgeführt:

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

Wie kann ich das rückgängig machen? Ich möchte den Schlüssel tatsächlich neu zuweisen.

192.168.1.1 ist der Sklave.

l --''''''--------- '' '' '' '' '' '
quelle

Antworten:

20

Identifizieren Sie den öffentlichen Schlüssel, den Sie bei der Ausführung kopiert haben ssh-copy-id:

cat ~/.ssh/id_rsa.pub

SSH auf den Server, auf den Sie den Schlüssel kopiert haben:

ssh [email protected]

Bearbeiten Sie die Datei ~hadoop/.ssh/authorized_keysauf 192.168.1.1Ihrem bevorzugten Editor, und löschen Sie die Zeile Ihren Schlüssel enthält.

David Edwards
quelle
1
Gibt es einen automatischeren Weg, warum? Likessh-rm-id [email protected]
SR
@ SR Mir ist kein einziger Befehl bekannt, der dies automatisiert. Theoretisch könnten Sie es mit einem kleinen Einzeiler "automatisieren", indem Sie ssheinen sedBefehl (oder ähnliches) zum Bearbeiten ~/.ssh/authorized_keysund Entfernen der Zeile ausführen . Siehe superuser.com/questions/429954/…
David Edwards
4

Wenn du ein ssh-copy-idlike gemacht hast :

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

So können Sie auf diesen Remote-Computer zugreifen, ohne ein Kennwort zu verwenden:

ssh $remote

Um es auf systematische Weise rückgängig zu machen, können Sie Folgendes schreiben:

idssh=`cat ~/.ssh/id_rsa.pub | awk '{print $2}'`
ssh $remote "sed -i '/$idssh/{d}' .ssh/authorized_keys"

Ich benutze es in Skripten, die ich für scpmehrere Dateien benötige , also frage ich nur einmal nach dem Passwort.

Javi M.
quelle
1
Dies könnte ein bisschen gefährlich sein: Sie greifen nach dem Kommentarfeld des Schlüssels. Es ist eine beliebige Zeichenfolge ohne Bedeutung und kann mehrmals enthalten sein. Ich würde entweder nach der langen AAA....==Zeichenfolge (dem eigentlichen Schlüssel) oder nach der vollständigen Zeile von greifen id_rsa.pub. Aber +1, um zu zeigen, wie das Entfernen eines Schlüssels automatisiert wird.
PerlDuck
1
@PerlDuck du hast recht. Es ist viel besser, den Schlüssel ($ 2) selbst zu verwenden als das dritte Feld. Vielen Dank.
Javi M.
@Javi M. Ich bin auf ein anderes Problem gestoßen. Der Schrägstrich, der standardmäßig als Trennzeichen in sed verwendet wird, befand sich in meinem öffentlichen Schlüssel. Aus diesem Grund empfand ich die Verwendung eines Semikolons als Trennzeichen für sed als das Beste, da es unwahrscheinlich erscheint, dass es im öffentlichen Schlüssel angezeigt wird. Um dies zu tun, war es notwendig, zuerst dem Charakter zu entkommen. ssh $remote "sed -i '\;$idssh;{d}' .ssh/authorized_keys"
Am
Hier finden Sie einige Informationen darüber, welche Zeichen in einem öffentlichen Schlüssel landen können.
Ccalvert