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 hadoop@192.168.1.1

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

192.168.1.1 jest niewolnikiem.

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 hadoop@192.168.1.1

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


1
Czy istnieje sposób, aby zrobić to bardziej automatycznie, dlaczego? Jakssh-rm-id hadoop@192.168.1.1
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.


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.
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.