Pertanyaan 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 bodoh membersihkan semuanya dari saya ~/.ssh/authorized_keys mengajukan. Untungnya saya memiliki SSH terbuka, jadi saya masih terhubung, dan dapat memperbaiki file, tetapi ketika saya mencoba untuk mengembalikan file kunci saya, itu tidak bekerja. Saya masih mendapatkan izin ditolak dari server di komputer 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 tidak berhasil juga.

Apakah ada hal lain yang harus saya lakukan seperti memuat ulang file bagaimana caranya?


147
2018-06-01 16:02


asal


Bertahun-tahun kemudian, ini -tampaknya- tampak relevan & aktif; hanya ingin melakukan observasi, berbicara tentang telah menghindari peluru: "Untungnya saya memiliki SSH terbuka, jadi saya masih terhubung [..]" - sheesh! ; dP - Nostromov
Posting ini, yang diedit pada hari ulang tahun saya, menyelamatkan saya dua bulan yang lalu pada hari ulang tahun saya. - ytpillai


Jawaban:


Kamu harus tak pernah simpan file dengan isinya dimulai dengan -----BEGIN RSA PRIVATE KEY----- di server, itu adalah Anda pribadi kunci. Sebagai gantinya, Anda harus meletakkan publik kunci ke dalam ~/.ssh/authorized_keys mengajukan.

Ini publik kunci memiliki .pub ekstensi saat dibuat menggunakan ssh-keygen dan isinya dimulai dengan ssh-rsa AAAAB3. (Format biner dijelaskan dalam jawaban atas pertanyaan ini).

Izin dari ~/.ssh pada server harus 700. File tersebut ~/.ssh/authorized_keys (pada server) seharusnya memiliki mode 600. Izin dari kunci (pribadi) di sisi klien harus 600.

Jika kunci pribadi tidak dilindungi dengan kata sandi, dan Anda menaruhnya di server, saya sarankan Anda untuk membuat yang baru:

ssh-keygen -t rsa

Anda dapat melewati ini jika Anda yakin sepenuhnya bahwa tidak ada yang dapat memulihkan kunci pribadi yang dihapus dari server.

Jika ini tidak membantu, jalankan ssh dengan opsi untuk lebih banyak verbositas:

ssh -vvv user@example.com

Di sisi server, Anda dapat meninjau /var/log/auth.log untuk detailnya.


170
2018-06-01 16:29



Dengan server Amazon EC2 yang saya dapatkan hanyalah kunci privat (key.pem). Saya tidak memiliki kunci publik di mana pun. - Dave Long
@Dave Long: Anda harus membuat kunci baru menggunakan ssh-keygen -t rsa dan buat yang baru dibuat id_rsa.pub file di ~/.ssh/authorized_keys di server Anda. Lihat juga docs.amazonwebservices.com/AWSEC2/latest/UserGuide/… - Lekensteyn
@DaveLong: Anda dapat membuat kunci publik dari kunci privat kapan saja. Anda dapat melakukan ini hanya dengan perintah berikut: ssh-keygen -y -f key.pem > key.pub - Morgan Blackthorne
@MorganBlackthorne Sementara itu benar, saya akan merekomendasikan membuat kunci pribadi Anda daripada menerima satu dari sumber jarak jauh. Anda tidak dapat sepenuhnya yakin bahwa kunci privat tidak bocor. - Lekensteyn
@Gerrat Tetap². - Lekensteyn


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 diperlukan ssh-copy-id untuk dipasang.

  • menjamin itu mkdir bekerja sebelum mencoba menambahkan id_rsa.pub untuk authorized_keys.


147
2018-02-27 19:31



Jawaban Anda membantu saya melakukan ini di beberapa mesin jarak jauh tanpa paket tambahan apa pun, terima kasih. - nol
Ini tidak menjamin bahwa direktori "~ / .ssh" dan file "~ / .ssh / authorized_keys" akan dibuat dengan izin yang benar. - Nick
@Nick, saya punya masalah itu. Jadi mungkin seseorang harus benar-benar memeriksa keberadaannya terlebih dahulu, jika tidak ada hasil yang benar dengan chmod (700 / folder, 600 / file), dan hanya kemudian tambahkan? jadi mungkin itu tidak bisa menjadi satu liner? - AnneTheAgile
@AnneTheAgile Saya pikir mengubah mkdir -p ~/.ssh bagian dari jawaban yang diberikan oleh @MariusButuc untuk umask 077 && mkdir -p ~/.ssh adalah semua yang perlu Anda lakukan untuk memastikan bahwa itu akan berfungsi dengan baik. - Nick
ty @Nick! Aku akan mencobanya. - AnneTheAgile


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

ssh-copy-id user@host

115
2018-06-01 16:32



Sepertinya itu bukan perintah yang valid di Mac, yang merupakan mesin klien saya. - Dave Long
Semoga bermanfaat phildawson.tumblr.com/post/484798267/ssh-copy-id-in-mac-os-x - Shoaib Nawaz
di OSX Anda dapat menginstal dengan minuman: brew install ssh-copy-id - phil
Pada Macports, perintah ini dapat diinstal menggunakan sudo port install openssh +ssh_copy_id. Itu +ssh_copy_id menginstal openssh dengan varian ssh_copy_id. - Stefan Lasiewski
Perhatikan bahwa petunjuk pada phildawson.tumblr.com meminta Anda untuk menginstal perangkat lunak yang tidak dipercaya, sebagai root. Ini cukup berbahaya dan cara yang baik untuk diretas, kecuali Anda tahu Anda dapat mempercayai si penulis. - Stefan Lasiewski


local> scp .ssh/id_dsa.pub remote.com:
local> ssh remote.com
remote> cat id_dsa.pub >> .ssh/authorized_keys
remote> rm id_dsa.pub
remote> exit

32
2018-06-01 18:23





Cara termudah adalah menyalin dan menempel ...

Tampilan pertama / salin isi kunci publik lokal Anda id_rsa.pub termasuk awal "ssh-rsa" hingga diakhiri dengan alamat email Anda:

cat ~/.ssh/id_rsa.pub

Kemudian edit authorized_keys di server dan tempel konten clipboard Anda di bawah tombol lain apa pun di file itu:

nano ~/.ssh/authorized_keys

Dan simpan Ctl+O, keluar dari file Ctl+X, keluar dari sesi SSH exit dan coba masuk kembali untuk memastikannya berfungsi. Jika tidak meminta kata sandi, itu berhasil.


7
2017-09-07 18:42





Setelah menyimpan kunci publik, Anda harus menyimpan kunci pribadi ke dalam direktori dan file di komputer Anda. Dan di bagian auth dari ssh pada dempul Anda harus menunjuk ke file kunci pribadi yang Anda simpan di desktop Anda. Ini akan berhasil. Ini bekerja untukku.


3
2018-04-23 19:59



Saya hanya akan suka jika windows console bisa memiliki semua fungsi ssh ditambahkan ke interpreter itu - Dennis


Saya pikir saya dapat berkontribusi untuk ini karena ini adalah tentang contoh AWS khusus dan semua jawaban hanya memperlakukan masalah sebagai masalah Linux, seolah-olah itu adalah bagian dari perangkat keras. Hal pertama yang perlu Anda pahami adalah jangan pernah, jangan pernah memperlakukan 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 alami dengan AWS. Buat AMI dari instance Anda dan masukkan kunci yang Anda butuhkan ke instance baru. cloud-init akan mengurusnya untuk Anda. Secara lebih rinci yang harus Anda lakukan adalah menggunakan kunci publik yang benar ketika membuat contoh baru keluar dari AMI yang asli. Jika, seperti dalam komentar jawaban yang disetujui, Anda ingin membuat kunci Anda sendiri dari file pub dan pem pemohon. AWS memberi Anda pilihan untuk mengunggah kunci publik Anda untuk digunakan dalam EC2.

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


3
2018-03-03 01:22





Dapatkan shell pada mesin remote 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 setelahnya.

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

1
2017-12-07 20:33





Berikut adalah variasi di mana Anda mungkin memiliki daftar nama file kunci publik dalam file teks dan banyak file kunci publik juga dalam direktori yang sama.

Variasi ini dapat berguna 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

1
2017-08-23 17:32