Login pertama:
- L mengirimkan permintaan nama pengguna dan permintaan otentikasi SSH ke S1
- S1 mengembalikan mekanisme otentikasi SSH yang tersedia, dengan "kata sandi" sebagai salah satunya
- L mengambil "kata sandi" dan mengirimkan kata sandi polos ke S1
- S1 memberikan nama pengguna dan kata sandi ke tumpukan PAM.
- Pada S1, PAM (biasanya
pam_krb5
atau pam_sss
) meminta TGT (tiket pemberian tiket) dari Kerberos KDC.
- S1 memperoleh TGT.
- Gaya lama (tanpa preauth): S1 mengirimkan AS-REQ dan menerima AS-REP yang berisi TGT.
- Gaya baru (dengan preauth): S1 menggunakan kata sandi Anda untuk mengenkripsi cap waktu saat ini, dan melampirkannya ke AS-REQ. Server mendekripsi stempel waktu dan memverifikasi bahwa itu berada dalam kemiringan waktu yang diizinkan; jika dekripsi gagal, kata sandi langsung ditolak. Jika tidak, TGT dikembalikan dalam AS-REP.
- S1 mencoba mendekripsi TGT menggunakan kunci yang dihasilkan dari kata sandi Anda. Jika dekripsi berhasil, kata sandi diterima sebagai benar.
- TGT disimpan ke cache kredensial yang baru dibuat. (Anda dapat memeriksa
$KRB5CCNAME
variabel lingkungan untuk menemukan ccache, atau gunakan klist
untuk membuat daftar isinya.)
- S1 menggunakan PAM untuk melakukan pemeriksaan otorisasi (tergantung konfigurasi) dan membuka sesi.
- Jika
pam_krb5
dipanggil dalam tahap otorisasi, ia memeriksa apakah ~/.k5login
ada. Jika ya, harus mencantumkan prinsip klien Kerberos. Kalau tidak, satu-satunya kepala sekolah yang diizinkan adalah .username@DEFAULT-REALM
Info masuk kedua:
- S1 mengirimkan nama pengguna dan permintaan SSH authn ke S2
- S2 mengembalikan mekanisme autor yang tersedia, salah satunya adalah "gssapi-with-mic" 1
- S1 meminta tiket untuk , dengan mengirim TGS-REQ dengan TGT ke KDC, dan menerima TGS-REP dengan tiket layanan darinya.
host/s2.example.com@EXAMPLE.COM
- S1 menghasilkan "AP-REQ" (permintaan otentikasi) dan mengirimkannya ke S2.
- S2 mencoba mendekripsi permintaan. Jika berhasil, otentikasi dilakukan. (PAM tidak digunakan untuk otentikasi.)
- Protokol lain seperti LDAP dapat memilih untuk mengenkripsi transmisi data lebih lanjut dengan "kunci sesi" yang disertakan dengan permintaan; Namun, SSH telah menegosiasikan lapisan enkripsi sendiri.
- Jika otentikasi berhasil, S2 menggunakan PAM untuk melakukan pemeriksaan otorisasi dan membuka sesi, sama seperti S1.
- Jika penerusan kredensial diaktifkan dan TGT memiliki bendera "penerusan", maka S1 meminta salinan TGT pengguna (dengan set bendera "penerusan") dan mengirimkannya ke S2, di mana ia disimpan ke ccache baru. Ini memungkinkan login terautentikasi Kerberos yang diautentikasi.
Perhatikan bahwa Anda juga bisa mendapatkan TGT secara lokal. Di Linux, Anda dapat melakukan ini menggunakan kinit
, lalu terhubung menggunakan ssh -K
. Untuk Windows, jika Anda masuk ke domain Windows AD, Windows melakukannya untuk Anda; jika tidak, MIT Kerberos dapat digunakan. Putty 0,61 mendukung penggunaan Windows (SSPI) dan MIT (GSSAPI), meskipun Anda harus mengaktifkan penerusan (delegasi) secara manual.
1 gssapi-keyex
juga dimungkinkan tetapi tidak diterima ke dalam OpenSSH resmi.