První přihlášení:
- L odešle uživatelské jméno a požadavek na ověření SSH na S1
- S1 vrací dostupné mechanismy ověřování SSH, přičemž jedním z nich je „heslo“
- L vybere "heslo" a odešle prosté heslo S1
- S1 poskytuje uživatelské jméno a heslo zásobníku PAM.
- Na S1, PAM (obvykle
pam_krb5
nebopam_sss
) požaduje TGT (ticket-granting ticket) od Kerberos KDC.- S1 získá TGT.
- Starý styl (bez předběžného ověření):S1 odešle AS-REQ a přijme AS-REP obsahující TGT.
- Nový styl (s preauth):S1 používá vaše heslo k zašifrování aktuálního časového razítka a připojí ho k AS-REQ. Server dešifruje časové razítko a ověří, že je v povoleném časovém zkreslení; pokud se dešifrování nezdaří, heslo je okamžitě odmítnuto. V opačném případě se v AS-REP vrátí TGT.
- S1 se pokusí dešifrovat TGT pomocí klíče vygenerovaného z vašeho hesla. Pokud je dešifrování úspěšné, je heslo přijato jako správné.
- TGT se uloží do nově vytvořené mezipaměti pověření. (Můžete si prohlédnout
$KRB5CCNAME
proměnnou prostředí k nalezení ccache, nebo použijteklist
vypsat jeho obsah.)
- S1 získá TGT.
- S1 používá PAM k provádění kontrol autorizace (závislé na konfiguraci) a otevření relace.
- Pokud
pam_krb5
je volána ve fázi autorizace, kontroluje, zda~/.k5login
existuje. Pokud ano, musí uvést klientský principál Kerberos. Jinak je jediným povoleným objektemusername@DEFAULT-REALM
.
- Pokud
Druhé přihlášení:
- S1 odešle uživatelské jméno a požadavek na ověření SSH na S2
- S2 vrací dostupné auth mech, jeden z nich je "gssapi-with-mic"
- S1 požaduje tiket za
host/s2.example.com@EXAMPLE.COM
odesláním TGS-REQ s TGT do KDC a přijetím TGS-REP se servisním lístkem od něj. - S1 vygeneruje "AP-REQ" (požadavek na ověření) a odešle ho S2.
- S2 se pokusí požadavek dešifrovat. Pokud se to podaří, je provedena autentizace. (PAM se pro ověřování nepoužívá.)
- Jiné protokoly, jako je LDAP, se mohou rozhodnout šifrovat další přenos dat pomocí „klíče relace“, který byl součástí požadavku; SSH si však již vyjednalo vlastní šifrovací vrstvu.
- Pokud je ověření úspěšné, S2 použije PAM k provedení kontroly autorizace a otevření relace, stejně jako S1.
- Pokud bylo povoleno předávání pověření a TGT má příznak „forwardable“, pak S1 požádá o kopii uživatelského TGT (s nastaveným příznakem „forwarded“) a odešle ji S2, kde se uloží do nového ccache . To umožňuje rekurzivní přihlášení ověřená Kerberos.
Upozorňujeme, že TGT můžete získat také lokálně. V systému Linux to můžete provést pomocí kinit
a poté se připojte pomocí ssh -K
. Pokud jste v systému Windows přihlášeni k doméně Windows AD, systém Windows to udělá za vás; jinak lze použít MIT Kerberos. PuTTY 0.61 podporuje použití Windows (SSPI) i MIT (GSSAPI), i když předávání (delegování) musíte povolit ručně.
gssapi-keyex
je také možné, ale nebylo přijato do oficiálního OpenSSH.