Як скасувати ssh-copy-id?


15

У мене є 2-вузловий кластер hadoop.

Я запустив цю команду на майстер:

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

Як я можу скасувати це? Я дійсно хотів би перепризначити ключ.

192.168.1.1 є рабом.

Відповіді:


20

Визначте відкритий ключ, який ви скопіювали під час запуску ssh-copy-id:

cat ~/.ssh/id_rsa.pub

SSH на сервер, на якому ви скопіювали ключ:

ssh hadoop@192.168.1.1

Відредагуйте файл ~hadoop/.ssh/authorized_keysза 192.168.1.1допомогою вибраного редактора та видаліть рядок, що містить ваш ключ.


1
Чи є спосіб зробити це більш автоматичним, чому? Якssh-rm-id hadoop@192.168.1.1
SR

@SR Я не знаю жодної команди, яка це автоматизує. Теоретично ви могли «автоматизувати» його самостійно за допомогою невеликого однолінійного інструмента, використовуючи sshдля запуску sedкоманди (або подібної) для редагування ~/.ssh/authorized_keysта видалення рядка. Дивіться superuser.com/questions/429954/…
Девід Едвардс

4

Якщо ви зробили ssh-copy-idподібне:

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

Таким чином, ви можете отримати доступ до цієї віддаленої машини без використання пароля:

ssh $remote

Щоб скасувати це систематично, ви можете скопіювати щось на зразок:

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

Я використовую його в сценаріях, мені потрібно до scpдекількох файлів, тому я лише один раз запитую пароль.


1
Це може бути трохи небезпечно: ви шукаєте поле для коментаря ключа. Це довільна рядок без будь-якого значення і може міститися не один раз. Я б привітався або за довгий AAA....==рядок (фактичний ключ), або за повний рядок з id_rsa.pub. Але +1 - показ того, як автоматизувати видалення ключа.
PerlDuck

1
@PerlDuck ви праві. Набагато краще використовувати сам ключ ($ 2), ніж третє поле. Дякую.
Хаві М.

@Javi M. У мене виникло ще одне питання. Нахил вперед, який використовується за замовчуванням як роздільник у sed, був у моєму відкритому ключі. Як результат, я вважав, що найкраще використовувати крапку з комою як розмежувач sed, оскільки, схоже, це не відображатиметься у відкритому ключі. Для цього потрібно було спочатку втекти персонажа. Я закінчив щось подібне:ssh $remote "sed -i '\;$idssh;{d}' .ssh/authorized_keys"
ccalvert

Ось деяка інформація про те, які символи можуть опинитися в відкритому ключі.
ccalvert

Дякуємо @ccalvert На основі запропонованого вами коментаря я схвалив видання chris-maes
Javi M.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.