Jak cofnąć identyfikator ssh-copy-id?

15

Mam 2-węzłowy klaster hadoop.

Uruchomiłem to polecenie na urządzeniu głównym:

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

Jak mogę to cofnąć? Tak naprawdę chciałbym ponownie przypisać klucz.

192.168.1.1 jest niewolnikiem.

l - '' '' ---------- '' '' '' '
źródło

Odpowiedzi:

20

Zidentyfikuj klucz publiczny, który skopiowałeś podczas uruchamiania ssh-copy-id:

cat ~/.ssh/id_rsa.pub

SSH na serwer, na który skopiowałeś klucz do:

ssh [email protected]

Edytuj plik ~hadoop/.ssh/authorized_keysprzy 192.168.1.1użyciu preferowanego edytora i usuń wiersz zawierający klucz.

David Edwards
źródło
1
Czy istnieje sposób, aby zrobić to bardziej automatycznie, dlaczego? Jakssh-rm-id [email protected]
SR
@SR Nie znam ani jednego polecenia, które to automatyzuje. Teoretycznie, można „Automat” to sam z odrobiną jednej liniowej z zastosowaniem sshuruchomić sedkomendę (lub podobne), aby edytować ~/.ssh/authorized_keysi usunąć linię. Zobacz superuser.com/questions/429954/…
David Edwards,
4

Jeśli zrobiłeś coś ssh-copy-idtakiego:

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

Aby uzyskać dostęp do tego zdalnego komputera bez użycia hasła:

ssh $remote

Aby cofnąć to w systematyczny sposób, możesz napisać skrypt w stylu:

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

Używam go w skryptach, których potrzebuję do scpkilku plików, więc tylko raz pytam o hasło.

Javi M.
źródło
1
Może to być trochę niebezpieczne: szukasz greckiego pola komentarza do klucza. Jest to dowolny ciąg bez żadnego znaczenia i może być zawarty więcej niż jeden raz. Chciałbym grep albo dla długiego AAA....==łańcucha (rzeczywisty klucz), albo dla pełnej linii z id_rsa.pub. Ale +1 za pokazanie, jak zautomatyzować usuwanie klucza.
PerlDuck,
1
@PerlDuck masz rację. O wiele lepiej jest użyć samego klucza (2 $) niż trzeciego pola. Dziękuję Ci.
Javi M.,
@Javi M. Napotkałem inny problem. Ukośnik do przodu używany domyślnie jako separator w sed znajdował się w moim kluczu publicznym. W rezultacie uznałem, że najlepiej jest używać średnika jako separatora sed, ponieważ nie wydaje się, aby pojawiał się w kluczu publicznym. Aby to zrobić, najpierw trzeba było uciec od postaci. Skończyło się na czymś takim:ssh $remote "sed -i '\;$idssh;{d}' .ssh/authorized_keys"
ccalvert
Oto kilka informacji na temat tego, które znaki mogą skończyć w kluczu publicznym.
ccalvert
Dzięki @ccalvert. W oparciu o sugerowany komentarz zatwierdziłem wydanie chris-maes
Javi M.