Kerberos導入からSSH GSSAPI認証成功までの記録


🛠️ 目的

Kerberosを使って、SSHログインを公開鍵なしでGSSAPI認証(SSO風)で通す構成を目指した。sudoもチケットで通す構想だったが、そこには別途PAM連携が必要で今回は見送り。

📌 環境構成

  • KDCサーバ:kdc.starf.local
  • クライアント(SSH発行元):sgt.starf.local
  • SSHサーバ(ログイン先):starf.starf.local
  • ドメイン:STARF.LOCAL
  • ユーザー:user

1️⃣ Kerberosの基本設定

サーバ側(KDC)

/etc/krb5.conf の設定
[kdc]
    profile = /etc/krb5kdc/kdc.conf

kadminでプリンシパル追加:

addprinc host/starf.STARF.LOCAL
addprinc -randkey host/starf.STARF.LOCAL
ktadd host/starf.STARF.LOCAL

クライアント側(sgt)

チケット取得確認:

kinit user
klist

2️⃣ SSH側の設定

sshd_config(starf側)

GSSAPIAuthentication yes
GSSAPICleanupCredentials yes
UsePAM yes

ssh_config(クライアント側)

GSSAPIAuthentication yes
GSSAPIDelegateCredentials yes

3️⃣ hostプリンシパルとkeytabの迷走

keytabを /etc/krb5.keytab に書き込むも、プリンシパルの綴り(starF vs starf)、ホスト名(FQDN)、KVNOの不整合などで、以下のようにカオス状態に。

klist -k /etc/krb5.keytab
 2 host/starf.STARF.LOCAL@STARF.LOCAL
 2 host/starF.STARF.LOCAL@STARF.LOCAL
 2 host/starf.starf.local@STARF.LOCAL
 1 host/starf.STARF.LOCAL@STARF.LOCAL

対応策

  • hostname -f が starF.starF.local となっており、Kerberosに登録されたプリンシパルと一致しない
  • FQDN(小文字/大文字)とkrb5.keytab中のプリンシパルが不一致 → すべて統一した
  • 正しいKVNOだけを残すため、ktutilでkeytabを手動編集

4️⃣ 認証エラーとその原因

ログの抜粋:

Unspecified GSS failure.  Minor code may provide more information
Key version is not available

→ 原因は keytab にあるプリンシパルの KVNO がチケットと一致していなかった。

再度 ktutil にて正しいプリンシパルだけを addentwkt で保存し、チケット取得と照合。

5️⃣ 成功の瞬間

ついに以下の出力が得られた:

debug1: Next authentication method: gssapi-with-mic
Authenticated to starf ([192.168.11.8]:22) using "gssapi-with-mic"

klist 結果(GSS認証後)

Ticket cache: FILE:/tmp/krb5cc_1000
Default principal: user@STARF.LOCAL

Valid starting       Expires              Service principal
2025-07-19T00:30:39  2025-07-19T15:31:39  krbtgt/STARF.LOCAL@STARF.LOCAL
2025-07-19T00:32:01  2025-07-19T15:31:39  host/starf.starf.local@STARF.LOCAL

✅ まとめ

  • プリンシパル名は FQDN、ドメイン名含めて正確に
  • hostname -f と krb5.keytab のプリンシパル名は一致必須
  • KVNO は ktutil listklistを使って整合性を取る
  • GSS認証時のエラーは、keytabのKVNO不整合が多い
  • sudoのチケット連携は pam_krb5が必要(今回は未導入)

以上で、Kerberos + SSH(GSSAPI)環境は完成。SSO風ログインが可能になった。

\ Get the latest news /

Leave a Reply

Your email address will not be published. Required fields are marked *