Saya punya beberapa komputer klien (yaitu laptop, desktop, dll.), Dan saya terhubung ke beberapa mesin server yang saya kelola, dan saya masuk ke semuanya melalui SSH. Saya bisa membayangkan beberapa skema mengelola kunci ssh yang masuk akal, dan saya ingin tahu tentang apa yang dilakukan orang lain.
Opsi 1: Satu keypair publik / pribadi global.
Saya akan menghasilkan satu kunci publik / privat, dan meletakkan kunci privat pada setiap mesin klien, dan kunci publik pada setiap mesin server.
Opsi 2: Satu keypair per mesin server.
Saya akan menghasilkan satu keypair pada setiap mesin server, dan meletakkan setiap kunci pribadi pada mesin klien saya.
Opsi 3: Satu keypair per mesin klien.
Setiap mesin klien akan memiliki kunci pribadi yang unik, dan setiap mesin server akan memiliki kunci publik untuk setiap mesin klien yang ingin saya hubungkan.
Opsi 4: Satu keypair per pasangan klien / server
Benar-benar berlebihan?
Mana yang terbaik? Apakah ada opsi lain? Kriteria apa yang Anda gunakan untuk mengevaluasi konfigurasi yang tepat?
sumber
Saya menggunakan solusi yang sedikit lebih rumit tetapi sangat fleksibel karena saya ingin mempertahankan beberapa pemisahan dalam kunci identitas SSH yang digunakan untuk server jaringan rumah, server kantor, server klien jaringan konsultasi dan berbagai sistem lainnya yang saya miliki akunnya.
Sekarang yang mengatakan saya bekerja dari workstation Linux hampir secara eksklusif jadi saya memiliki kunci USB yang setup menggunakan enkripsi LUKS dan window manager X11 saya bersama dengan daemon HAL mendeteksi drive terenkripsi LUKS dan meminta frasa sandi dekripsi ketika dimasukkan dan mencoba untuk dipasang. Dengan menyimpan ini pada drive terenkripsi seperti yang saya lakukan, saya tidak pernah menyimpan kunci SSH saya di workstation apa pun.
Saya kemudian memiliki konfigurasi berikut di
~/.ssh/config
file saya :The % d diterjemahkan menjadi direktori home user dengan OpenSSH dan di ~ / .ssh direktori Saya telah menciptakan keys.d sebagai symlink ke jalur direktori pada USB drive dienkripsi bila benar dipasang.
The % l ekspresi diterjemahkan menjadi nama host dan mesin klien lokal % u akan diterjemahkan ke nama klien lokal.
Apa yang dilakukan konfigurasi ini adalah memungkinkan SSH untuk mencari kunci menggunakan 3 ekspresi berbeda. Sebagai contoh jika nama pengguna
jdoe
klien lokal saya dan nama mesin klien lokal saya jikaexamplehost
itu akan terlihat dalam urutan berikut sampai menemukan kunci yang keduanya ada dan diterima oleh server jauh.Anda bahkan dapat menggunakan ekspresi % r untuk mencari kunci khusus untuk nama pengguna server jarak jauh atau % h untuk nama host server jarak jauh seperti % u dan % l digunakan.
Pembaruan: Sekarang saya benar-benar menggunakan gnu-gpg gnu-agent dengan kompatibilitas ssh-agent untuk hanya membaca dan menggunakan kunci otentikasi dari smartcard OpenPGP v2 saya.
sumber
Saya akan menghilangkan kedua opsi Anda 1s (yang saya duga satu seharusnya menjadi opsi 2 ;-) karena kunci pribadi adalah data sensitif, dan masuk akal untuk menyimpannya di tempat sesedikit mungkin. Saya pribadi tidak akan pernah menyalin kunci pribadi dari satu komputer ke komputer lain (atau bahkan dari satu file ke komputer lain di komputer yang sama), kecuali mungkin untuk membuat cadangan. Meskipun tidak seperti kebanyakan kunci enkripsi, jika kunci SSH hilang itu bukan akhir dunia (cukup buat yang baru, Anda tidak kehilangan data apa pun).
sumber
Opsi 3 dan gunakan sesuatu seperti Wayang untuk menangani manajemen kunci.
sumber
Opsi 3.
Ini juga memungkinkan Anda untuk mengontrol server mana yang dapat diakses klien. mis. jika klien X membutuhkan akses ke server A dan B, tetapi C atau D, Anda menyalinnya kunci publik hanya untuk host tersebut.
sumber