Bagaimana cara menambahkan kunci SSH ke file authorized_keys?

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.

Cara alternatif untuk menginstal kunci publik Anda di mesin remote authorized_keys:

cat ~/.ssh/id_rsa.pub | ssh USER@HOST "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

Beberapa keuntungan:

  • tidak memerlukan ssh-copy-id untuk diinstal.

  • menjamin bahwa mkdir berfungsi sebelum mencoba menambahkan id_rsa.pub untuk authorized_keys.

Jika Anda memiliki otentikasi berbasis login maka gunakan ssh-copy-id untuk menambahkan kunci publik Anda ke server jauh.

ssh-copy-id user@host
local> scp .ssh/id_rsa.pub remote.com:
local> ssh remote.com
remote> cat id_rsa.pub >> .ssh/authorized_keys
remote> rm id_rsa.pub
remote> exit

Cara termudah adalah dengan copy dan paste...

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.

mkdir -p ~/.ssh && chmod 700 ~/.ssh && touch ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys && echo "ssh-rsa KEYGOESHERE user@remotehost or note" >> ~/.ssh/authorized_keys

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.

http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html#how-to-generate-your-own-key-and-import-it-to-aws

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

Posting ini, yang diedit pada Hari ulang tahun saya, menyelamatkan saya dua bulan lalu pada Hari ulang tahun saya.