Bagaimana cara membatalkan ssh-copy-id?


15

Saya punya 2 simpul hadoop cluster.

Saya menjalankan perintah ini pada master:

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

Bagaimana saya bisa membatalkan ini? Saya sebenarnya ingin menugaskan kembali kunci.

192.168.1.1 adalah budaknya.

Jawaban:


20

Identifikasi kunci publik yang Anda salin ketika Anda berlari ssh-copy-id:

cat ~/.ssh/id_rsa.pub

SSH ke server tempat Anda menyalin kunci:

ssh hadoop@192.168.1.1

Mengedit file ~hadoop/.ssh/authorized_keyspada 192.168.1.1menggunakan editor pilihan Anda, dan menghapus baris yang berisi kunci Anda.


1
Apakah ada cara untuk melakukannya lebih otomatis mengapa? Sepertissh-rm-id hadoop@192.168.1.1
SR

@ SR Saya tidak mengetahui satu perintah pun yang mengotomatiskan ini. Secara teori, Anda bisa "mengotomatisasi" sendiri dengan menggunakan one-liner kecil sshuntuk menjalankan sedperintah (atau yang serupa) untuk mengedit ~/.ssh/authorized_keysdan menghapus baris. Lihat superuser.com/questions/429954/…
David Edwards

4

Jika Anda telah melakukan ssh-copy-idseperti:

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

Jadi Anda dapat mengakses mesin jarak jauh ini tanpa menggunakan kata sandi:

ssh $remote

Untuk membatalkannya secara sistematis, Anda dapat membuat skrip sesuatu seperti:

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

Saya menggunakannya dalam skrip, saya perlu scpbeberapa file, jadi saya hanya meminta kata sandi sekali saja.


1
Ini mungkin agak berbahaya: Anda memahami bidang komentar kunci. Ini adalah string yang sewenang-wenang tanpa makna apa pun dan dapat dimuat lebih dari satu kali. Saya akan grep untuk AAA....==string panjang (kunci aktual) atau untuk baris lengkap dari id_rsa.pub. Tapi +1 untuk menunjukkan cara mengotomatiskan penghapusan kunci.
PerlDuck

1
@Perlalu Anda benar. Jauh lebih baik menggunakan kunci ($ 2) itu sendiri daripada bidang ketiga. Terima kasih.
Javi M.

@Javi M. Saya mengalami masalah lain. Garis miring yang digunakan secara default sebagai pembatas di sed adalah kunci publik saya. Akibatnya, saya menemukan yang terbaik untuk menggunakan titik koma sebagai pembatas sed karena tampaknya tidak muncul di kunci publik. Untuk melakukan ini, pertama-tama perlu untuk melarikan diri dari karakter. Saya berakhir dengan sesuatu seperti ini:ssh $remote "sed -i '\;$idssh;{d}' .ssh/authorized_keys"
ccalvert

Berikut adalah beberapa informasi yang karakternya dapat berakhir di kunci publik.
ccalvert

Terima kasih @ccalvert. Berdasarkan komentar yang Anda sarankan, saya telah menyetujui edisi chris-maes
Javi M.
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.