Saya memiliki server Ubuntu di Amazon EC2, yang saya gunakan untuk pengembangan, dan hari ini saya dengan bodohnya membersihkan semuanya dari saya ~/.ssh/authorized_keys file. Untungnya saya memiliki SSH terbuka, jadi saya masih terhubung, dan dapat memperbaiki file, tetapi ketika saya mencoba mengembalikan file kunci saya, itu tidak berfungsi. Saya masih mendapatkan izin ditolak dari server di mesin lokal saya.
authorized_keys memiliki izin 600. Saya telah mencoba menambahkan kunci SSH saya dengan ssh-rsa dan membiarkan ssh-rsa mati. Saya juga mencoba membuat kunci SSH Semua satu baris, tetapi itu juga tidak berhasil.
Apakah ada hal lain yang harus saya lakukan seperti memuat ulang file bagaimana caranya?
Anda harus tidak pernah simpan file dengan isinya dimulai dengan -----BEGIN RSA PRIVATE KEY----- pada server, yang Anda pribadi kunci. Sebaliknya, Anda harus menempatkan publik kunci ke dalam ~/.ssh/authorized_keys file.
Ini publik kunci memiliki .pub ekstensi saat dibuat menggunakan ssh-keygen dan isinya dimulai dengan ssh-rsa AAAAB3. (Format biner dijelaskan dalam jawaban untuk pertanyaan ini).
Izin dari ~/.ssh pada server harus 700. Berkas ~/.ssh/authorized_keys (pada server) seharusnya memiliki modus 600. Izin kunci (pribadi) di sisi klien harus 600.
Jika kunci pribadi tidak dilindungi dengan kata sandi, dan Anda meletakkannya di server, saya sarankan Anda untuk membuat yang baru:
ssh-keygen -t rsa
Anda dapat melewati ini jika Anda sepenuhnya yakin bahwa tidak ada yang dapat memulihkan kunci pribadi yang dihapus dari server.
Jika ini tidak membantu, jalankan ssh dengan opsi untuk lebih bertele-tele:
ssh -vvv user@example.com
Di sisi server, Anda dapat meninjau /var/log/auth.log untuk rincian.
Pertama lihat / Salin konten kunci publik lokal Anda id_rsa.pub termasuk awal "ssh - rsa" sampai berakhir dengan alamat email Anda:
cat ~/.ssh/id_rsa.pub
Kemudian edit authorized_keys pada server dan paste isi clipboard Anda di bawah tombol lain dalam file tersebut:
nano ~/.ssh/authorized_keys
Dan Simpan Ctl+O, keluar dari file Ctl+X, keluar dari sesi SSH exit dan coba masuk kembali untuk mengonfirmasi bahwa itu berhasil. Jika tidak meminta kata sandi, itu berhasil.
Dapatkan shell pada mesin jarak jauh di mana Anda ingin meletakkan kunci dan kemudian Anda dapat menjalankan satu-liner ini untuk membuat file dan direktori yang diperlukan, mengatur izin mereka dan menambahkan kunci ke file. Tentu saja Anda harus mengubah KEYGOESHERE bagian bawah dan KOMENTAR setelah itu.
Saya pikir saya dapat berkontribusi untuk ini karena ini tentang instance AWS secara khusus dan semua jawaban hanya memperlakukan masalah sebagai masalah Linux, seolah-olah itu adalah perangkat keras. Hal pertama yang perlu anda pahami adalah bahwa Anda tidak boleh pernah memperlakukan instans EC2 sebagai perangkat keras. Itu hanya akan menciptakan lebih banyak pekerjaan untuk Anda memperlakukan mereka sebagai volatile. Itulah rintangan terbesar yang saya lihat orang-orang miliki dengan AWS.Buat AMI instance Anda dan masukkan kunci yang Anda butuhkan ke instance baru. cloud-init akan mengurusnya untuk you.In lebih detail yang harus anda lakukan adalah menggunakan kunci publik yang benar saat membuat instance baru dari AMI yang asli.Jika, seperti di komentar jawaban yang disetujui, Anda ingin membuat pasangan kunci pub dan pem Anda sendiri, AWS memberi Anda opsi untuk mengunggah kunci publik Anda untuk digunakan di EC2.
Setelah menyimpan kunci publik Anda harus menyimpan kunci pribadi ke dalam direktori dan file pada pc Anda. Dan di bagian auth ssh di putty Anda harus menunjuk ke file kunci pribadi yang Anda simpan di desktop Anda. Ini akan berhasil. Ini bekerja untuk saya.
Berikut adalah variasi di mana Anda mungkin memiliki daftar nama file kunci publik dalam file teks dan Kumpulan Besar File kunci publik juga ada di direktori yang sama.
Variasi ini dapat membantu jika Anda memberikan daftar besar file kunci publik untuk diimpor : -)
$ for i in $(cat ListOfPubKeyFiles.txt) ; do cat $i | ssh User@Hostname "cat >> ~/.ssh/authorized_keys"; done
Bertahun-tahun kemudian, ini - masih-tampaknya relevan & aktif; hanya ingin melakukan pengamatan, berbicara tentang telah menghindari peluru: “untungnya saya memiliki SSH terbuka, jadi saya masih terhubung […]” - sheesh! ; dP