ラップトップ、サーバー1、サーバー2、Kerberosサーバーの4台のコンピューターがあるとします。
すべての重要なSSHおよびKRB5プロトコル交換について説明します。「Lはユーザー名をS1に送信します」、「Kは...をS1に送信します」など。
(この質問はコミュニティで編集することを目的としています。改善してください非専門家の読者向け。)
最初のログイン:
pam_krb5
またはpam_sss
)がKerberos KDCにTGT(チケット許可チケット)を要求します。$KRB5CCNAME
環境変数を調べてccacheを見つけるか、klist
を使用してその内容を一覧表示できます。)pam_krb5
が呼び出されると、~/.k5login
が存在するかどうかが確認されます。存在する場合は、クライアントのKerberosプリンシパルをリストする必要があります。それ以外の場合、許可されるプリンシパルはusername@DEFAULT-REALM
のみです。2回目のログイン:
Host/s2.example.com@EXAMPLE.COM
のチケットを要求します。ローカルでTGTを取得することもできます。 Linuxでは、kinit
を使用してこれを実行してから、ssh -K
を使用して接続できます。 Windowsの場合、Windows ADドメインにログインすると、Windowsがそれを行います。それ以外の場合は、 MIT Kerberos を使用できます。 PuTTY 0.61は、Windows(SSPI)とMIT(GSSAPI)の両方の使用をサポートしていますが、手動で転送(委任)を有効にする必要があります。
1gssapi-keyex
も可能ですが、公式OpenSSHには受け入れられませんでした。
要するに、Kerberosチケットは、kinit
コマンドを使用するか、いわゆる「シングルサインオン」設定のローカルログインシーケンスの一部として、ターミナル(L)で取得するのが理想的です。 。リモートシステム(S1、S2)は、パスワードプロンプトなしでアクセスできます。連鎖アクセス(L→S1→S2)は、「チケット転送」として知られる手法を採用することで可能になります。このような設定では、特に、KDCが端末(L)から直接アクセスできる必要があります。
grawityによる他の回答は、このアプローチを詳細に説明しています。