Ini bukan tentang menyalin kunci publik di server dan kemudian ssh-ing, jika Anda akan menyarankan itu.
Jadi saya membuat instance AWS Linux, dan saya membuat pasangan kunci ssh, dan secara otomatis mengunduh kunci pribadi.
Sekarang saya dapat terhubung ke instance AWS Linux saya hanya dengan:
ssh -i key_they_gave_me ec2-user@AWSinstanceIP
Bagaimana cara mengatur hal semacam ini untuk Linux vms saya sendiri? Jadi seseorang bisa ssh ke dalamnya dengan kunci pribadi, tanpa perlu kata sandi?
EDIT: Saya tidak berbicara tentang menyalin id_rsa.pub. Saya tahu bagaimana melakukan itu, dan contoh AWS tidak mengharuskan itu. Itu yang saya mau.
Jawaban:
Frasa sandi kosong diizinkan dengan SSH. Anda dapat mereplikasi dengan
ssh-keygen
hanya menekan enter ketika diminta untuk frasa sandi. Dariman ssh-keygen
:Ini adalah perilaku standar untuk kunci yang dihasilkan sebagai bagian dari berbagai layanan cloud. Saya berharap Anda akan menemukan hal yang sama terjadi jika Anda menggunakan Google atau Microsoft cloud. Ini mungkin tampak tidak aman tetapi alternatifnya juga tidak bagus. Entah bagaimana mereka perlu memberi Anda akses ke VM.
Bagi siapa pun yang khawatir tentang keamanan,
ssh-keygen
juga memiliki fungsi untuk mengubah frasa sandi pada kunci pribadi tanpa perlu mengubah kunci publik:Secara pribadi saya memiliki frasa sandi aktif secara default, tetapi menyimpan kunci frasa sandi di dalam volume LUKS. Ketika saya tahu saya akan banyak melakukan sshing, saya memasang kunci passphraseless di atas kunci default. Ketika saya selesai bekerja, saya meng-unmount sehingga pengganggu masih harus berurusan dengan frasa sandi. Ini meniadakan perlunya ssh-agent banyak waktu sambil memberikan banyak kontrol atas seberapa aman kunci tersebut.
sumber
Anda bertanya tentang bagaimana infrastruktur AWS menghasilkan kunci ssh. Kecuali siapa pun yang bekerja untuk AWS dan diizinkan untuk mengungkapkan informasi itu ( sangat tidak mungkin) maka Anda tidak akan mendapatkan jawaban yang lengkap.
Selain itu, jawaban yang akan Anda cari sepenuhnya tergantung pada virtualisasi back-end apa yang Anda gunakan.
Yang sedang berkata, apa yang tersedia untuk umum dari AWS adalah bahwa mereka sekarang menggunakan
KVM
platform virtualisasi buatan sendiri daripadaXEN
seperti yang biasa mereka gunakan.Jadi kita bisa menebak bagaimana AWS melakukannya, atau setidaknya menyediakan metode untuk melakukan ini melalui host kvm. Cara yang paling umum bahwa aku sadar menggunakan
virt-sysprep
padaqcow2
gambar dengan--ssh-inject
bendera.Contoh
pertama buat kunci publik di kvmhost dengan
ssh-keygen
. Katakanlah penggunaiamAguest
Anda dan Anda telah menyimpan kunci publik baru/home/iamAguest/.ssh/id_rsa.pub
Anda kemudian akan menjalankan
virt-sysprep
untuk menyuntikkan kunci-kunci itu ke dalam gambar:Kemudian setelah Anda menggunakan instance menggunakan gambar itu
a_linux_image.qcow2
, Anda kemudian harus ssh menggunakan kunci yang baru dibuat.bagaimana amazon melakukan ini dengan mengklik tombol?
Script yang cukup sederhana bisa melakukan ini, tetapi pada platform skala AWS, tidak diragukan lagi akan sangat kompleks.
Jika Anda hanya menjalankan instance kvm milik Anda sendiri, sesuatu yang sederhana seperti ini dapat melakukan trik:
Namun perhatikan bahwa akan lebih baik untuk menyalin gambar terlebih dahulu, jadi Anda masih memiliki yang bersih tanpa kunci, jika Anda berencana menyediakan ini sebagai solusi konsumen. Ini juga merupakan ide yang bagus untuk menempatkan lebih banyak validasi dalam skrip; itu hanya contoh sederhana seperti apa adanya.
sumber
Saya benar-benar menemukan cara untuk melakukannya. Sebenarnya sangat sederhana.
Katakanlah Anda memiliki machine1 dan machine2, dan Anda ingin dapat mengakses machine2 dari machine1 tanpa menangani kunci machine1, melalui metode yang akan memungkinkan pengguna machine1 mengakses machine2 bahkan dari komputer lain selain machine1.
Anda melakukan
ssh-keygen
pada mesin2. Anda lakukancat /path/.ssh/id_rsa.pub >> /path/.ssh/authorized_keys
, laluchmod 600 /path/.ssh/authorized_keys
, lalu akhirnya Anda salinid_rsa
sebagai file permit.pem dan berikan ke machine1.Machine1 cara ini dapat terhubung ke machine2 lakukan
ssh -i permission.pem thatuser@machine2
. Pengguna machine1 dapat mengambil permit.pem dengannya dan terhubung ke machine2 tanpa kata sandi dari mesin apa pun.Tentu saja ini tidak aman, tetapi Anda juga bisa menggunakan kata sandi. Apa yang ingin saya ketahui adalah sebagai KONSEP bagaimana melakukannya. Ini yang menjawabnya.
sumber