ssh -o PreferredAuthentications: Apa perbedaan antara "kata sandi" dan "keyboard-interaktif"?

36

Keduanya PreferredAuthentications=passworddan PreferredAuthentications=keyboard-interactiveakan meminta kata sandi, jadi apa perbedaan di antara mereka?

Saya Google dengan kata kunci ssh PreferredAuthentications kata sandi perbedaan keyboard-interaktif tetapi tidak menemukan jawaban.

Satu-satunya perbedaan yang saya perhatikan adalah string cepat ( user@host's password:vs. Password:):

$ ssh -o PreferredAuthentications=password,keyboard-interactive my-host
root@my-host's password:
Password:
Permission denied (gssapi-keyex,gssapi-with-mic,publickey,keyboard-interactive).

UPDATE (2018-04-09):

Untuk referensi yang mudah, berikut ini dari SSH: Buku TDG sebagaimana disebutkan dalam jawaban jouell .

"keyboard-interactive"otentikasi pengguna dimaksudkan terutama untuk mengakomodasi PAMotentikasi di sisi server. Ini menyediakan untuk beberapa dialog tantangan-respons dengan pengguna di mana server mengirimkan permintaan teks kepada pengguna, tipe pengguna dalam respons, dan proses ini dapat mengulang beberapa kali. Jadi misalnya, Anda dapat mengonfigurasi PAMSSH dengan modul yang melakukan otentikasi menggunakan token keamanan RSA , atau skema kata sandi satu kali . Orang menjadi bingung dengan hal ini karena secara default, "keyboard-interactive"otentikasi biasanya hanya mengimplementasikan otentikasi kata sandi dalam satu siklus tantangan-respons, yang hanya meminta kata sandi, sehingga terlihat persis sama dengan"password"otentikasi. Jika Anda tidak sengaja menggunakan keduanya untuk tujuan yang berbeda, Anda mungkin ingin menonaktifkan satu atau yang lain untuk menghindari kebingungan pengguna akhir.

pynexj
sumber
1
Lihat RFC 4252 untuk otentikasi kata sandi dan RFC 4256 untuk keyboard-interaktif .
pynexj

Jawaban:

37

Protokol SSH memiliki banyak metode otentikasi. The sandi dan keyboard interaktif dua dari mereka.

The otentikasi password adalah permintaan sederhana untuk satu password. Tidak ada konfirmasi khusus yang dikirim oleh server. Jadi klien yang memilih bagaimana label prompt (The "user @ sandi host" prompt dari OpenSSH klien , seperti ssh, sftp, dll).

The otentikasi Keyboard-interaktif adalah permintaan yang lebih kompleks untuk nomor sewenang-wenang potongan informasi. Untuk setiap informasi, server mengirimkan label konfirmasi. Selain itu memungkinkan server untuk memberikan deskripsi panjang dari "formulir" keseluruhan. Server juga dapat menentukan, input mana yang rahasia (perlu dikaburkan saat pengguna mengetiknya) dan mana yang tidak.

Meskipun dalam kebanyakan kasus otentikasi keyboard-interaktif digunakan untuk meminta prompt kata sandi "rahasia" tunggal, sehingga hampir tidak ada perbedaan dengan otentikasi kata sandi .

Itulah perbedaan dari perspektif protokol.


Dari perspektif implementasi, dengan server OpenSSH, otentikasi keyboard-interaktif dapat dihubungkan ke otentikasi dua faktor (atau multi-faktor), misalnya disediakan oleh mekanisme PAM generik atau Kerberos .

Dari perspektif klien, perbedaan lain adalah lokalisasi. Dengan otentikasi kata sandi , klien dapat melokalkan label "Kata Sandi" , karena ia tahu server meminta kata sandi. Dengan otentikasi keyboard-interaktif , bahkan ketika server meminta hanya satu kata sandi, klien tidak dapat melokalisasi prompt (kecuali jika mempekerjakan AI), karena itu prompt umum.

Martin Prikryl
sumber
2

Anda sudah tahu apa 'kata sandi' itu. Dari tingkat yang sangat tinggi (bukan hal-hal protokol tingkat bata), pikirkan 'keyboard-interaktif' sebagai metode yang Anda gunakan 2FA menggunakan Radius dan / atau SecurID dll. Ini menyediakan dialog tantangan dan respons: ssh.com memiliki yang bagus deskripsi singkat tentang itu. Langkah selanjutnya untuk menyorot keyboard-interaktif adalah payung di mana kata sandi berada. Hormat kepada penulis, ini agak membingungkan.

Lihat juga definisi Snail Book . Kami sering menggunakan ini untuk kotak terlindungi RSA kami.

jell
sumber