想定環境

  • KDCサーバ: kdc0.example.com
  • SSHサーバ: krb-client0.example.com
  • SSHクライアント: krb-client1.example.com

ユーザーはkrb-client1からkrb-client0にSSH接続したい。

KDCサーバ(kdc0.example.com)のセットアップ

  1. 必要なパッケージをインストールする。

     user@kdc0:~$ sudo apt update
     user@kdc0:~$ sudo apt install -y krb5-kdc krb5-admin-server
    
  2. 新しいrealmsを作成する。

     user@kdc0:~$ sudo krb5_newrealm
    
  3. /etc/krb5.confを編集する。

     user@kdc0:~$ sudo vim /etc/krb5.conf
    
     [libdefaults]
             default_realm = EXAMPLE.COM
             dns_lookup_realm = false
             dns_lookup_kdc = false
             kdc_timesync = 1
             ccache_type = 4
             forwardable = true
             proxiable = true
             rdns = false
             fcc-mit-ticketflags = true
    
     [realms]
             EXAMPLE.COM = {
                     kdc = kdc0.example.com
                     admin_server = kdc0.example.com
             }
    
     [domain_realm]
             .example.com = EXAMPLE.COM
             example.com = EXAMPLE.COM
    
  4. サービスを開始する。

     user@kdc0:~$ sudo systemctl restart krb5-kdc
     user@kdc0:~$ sudo systemctl restart krb5-admin-server
     user@kdc0:~$ sudo systemctl enable krb5-kdc
     user@kdc0:~$ sudo systemctl enable krb5-admin-server
    
  5. userユーザーを追加する。

     user@kdc0:~$ sudo kadmin.local
     kadmin.local:  addprinc user
     kadmin.local:  exit
    
  6. krb-client0.example.com用のkeytabファイルを生成する

     user@kdc0:~$ sudo kadmin.local
     kadmin.local: addprinc -randkey host/krb-client0.example.com
     kadmin.local: ktadd -k /tmp/krb-client0.keytab host/krb-client0.example.com
     kadmin.local: quit
    
  7. keytabファイルをkrb-client0.example.comへ転送する。

     user@kdc0:~$ scp /tmp/krb-client0.keytab krb-client0.example.com:/tmp/
    

sshサーバ(krb-client0)のセットアップ

  1. 必要なパッケージをインストールする。

     user@krb-client0:~$ sudo apt update
     user@krb-client0:~$ sudo apt install krb5-user
    
  2. /etc/krb5.keytabに適切なパーミッションを与える。

     user@krb-client0:~$ sudo mv /tmp/krb-client0.keytab /etc/krb5.keytab
     user@krb-client0:~$ sudo chown root:root /etc/krb5.keytab
     user@krb-client0:~$ sudo chmod 600 /etc/krb5.keytab
    
  3. /etc/krb5.confを編集する。

     user@krb-client0:~$ sudo vim /etc/krb5.conf
    
     [libdefaults]
         default_realm = EXAMPLE.COM
         dns_lookup_realm = false
         dns_lookup_kdc = false
    
     [realms]
         EXAMPLE.COM = {
             kdc = kdc0.example.com
             admin_server = kdc0.example.com
         }
    
     [domain_realm]
         .example.com = EXAMPLE.COM
         example.com = EXAMPLE.COM
    

sshクライアント(krb-client1)のセットアップ

  1. 必要なパッケージをインストールする。

     user@krb-client1:~$ sudo apt update
     user@krb-client1:~$ sudo apt install krb5-user
    
  2. /etc/krb5.confを編集する。

     user@krb-client1:~$ sudo vim /etc/krb5.conf
    
     [libdefaults]
         default_realm = EXAMPLE.COM
         dns_lookup_realm = false
         dns_lookup_kdc = false
    
     [realms]
         EXAMPLE.COM = {
             kdc = kdc0.example.com
             admin_server = kdc0.example.com
         }
    
     [domain_realm]
         .example.com = EXAMPLE.COM
         example.com = EXAMPLE.COM
    
  3. ssh接続をテストする。

     user@krb-client1:~$ ssh -o GSSAPIAuthentication=yes [email protected]