Pendeknya:
Ingin cara untuk melakukan otentikasi kunci SSH melalui LDAP.
Masalah:
Kami menggunakan LDAP (slapd) untuk layanan direktori dan kami baru saja pindah untuk menggunakan AMI kami sendiri untuk membuat instance. Alasan bit AMI penting adalah bahwa, idealnya , kami ingin dapat masuk dengan SSH melalui otentikasi kunci segera setelah instance berjalan dan tidak harus menunggu alat manajemen konfigurasi yang agak lambat untuk memulai skrip untuk menambahkan skrip untuk menambahkan kunci yang benar untuk instance.
Skenario yang ideal adalah bahwa, ketika menambahkan pengguna ke LDAP, kami juga menambahkan kunci mereka dan mereka akan segera dapat masuk.
Otentikasi kunci adalah suatu keharusan karena login berbasis kata sandi kurang aman dan menyusahkan.
Saya sudah membaca pertanyaan ini yang menunjukkan ada patch untuk OpenSSH yang disebut OpenSSH-lpk untuk melakukan ini tetapi ini tidak lagi diperlukan dengan server OpenSSH> = 6.2
Menambahkan opsi sshd_config (5) AuthorizedKeysCommand untuk mendukung pengambilan otor_keys dari perintah selain (atau bukan) dari sistem file. Perintah dijalankan di bawah akun yang ditentukan oleh opsi AuthorizedKeysCommandUser sshd_config (5)
Bagaimana saya bisa mengkonfigurasi OpenSSH dan LDAP untuk mengimplementasikan ini?
AuthorizedKeysCommandUser nobody
daripada root.ldapsearch -u -LLL -o ldif-wrap=no '(&(objectClass=posixAccount)(uid='"$1"'))' 'sshPublicKey' | sed -n 's/^[ \t]*sshPublicKey:[ \t]*\(.*\)/\1/p'
AuthorizedKeysCommandRunAs
dan tidakAuthorizedKeysCommandUser
Bagi siapa saja yang mendapatkan kesalahan saat menjalankan pencarian ldaps:
seperti saya (pada FreeBSD), perbaikannya adalah mengubah perintah sed pertama menjadi:
(menambahkan titik koma setelah 'd').
sumber
Hanya ingin berbagi "metode" saya, sisi klien saya adalah Khusus Debian / Ubuntu, tetapi sisi Server saya pada dasarnya sama seperti di atas, tetapi dengan sedikit lebih "HowTo:"
Server:
Aktifkan Atribut Kunci Publik:
Kredit:
https://blog.shichao.io/2015/04/17/setup_openldap_server_with_openssh_lpk_on_ubuntu.html
Sekarang gunakan ini untuk menambahkan ldif:
Menambahkan pengguna dengan kunci publik SSH di phpLDAPadmin
Pertama, buat pengguna dengan templat "Generik: Akun Pengguna". Lalu, buka bagian atribut "objectClass", klik "tambah nilai", dan pilih atribut "ldapPublicKey". Setelah Anda kirim, kembali ke halaman edit pengguna, klik "Tambah atribut baru" di bagian atas, dan pilih "sshPublicKey", tempelkan kunci publik ke area teks, dan akhirnya klik "Perbarui Objek". "
Atribut sshPublicKey tidak muncul - OpenLDAP PHPLDAP SSH Key Auth
Klien Ubuntu:
Buat Kunci Tes:
sumber
Ini bukan jawaban lengkap, hanya tambahan jawaban c4urself . Saya akan menambahkan ini sebagai komentar, tetapi saya tidak memiliki reputasi yang cukup untuk berkomentar, jadi tolong jangan downvote!
Ini adalah skrip yang saya gunakan untuk
AuthorizedKeysCommand
(berdasarkan versi c4urself). Ini berfungsi terlepas dari apakah nilai dikembalikan dalam pengkodean base64 atau tidak. Ini bisa sangat berguna jika Anda ingin menyimpan beberapa kunci yang diotorisasi dalam LDAP - cukup pisahkan kunci dengan karakter baris baru, mirip dengan file yang diotorisasi.sumber