SSH Kerberos認証が失敗し、Debian squeezeで「リクエストに間違ったプリンシパルが含まれている/クライアントの資格情報がありません」が表示される


8

パスワードプロンプトがないとkerberosでログインできないdebian squeezeホストがあります。同一に構成されたubuntu 12.04ホストは正常に動作し、パスワードプロンプトを表示せずにログインできます。

kinitの後、klistは次のようになります。

Ticket cache: FILE:/tmp/krb5cc_1000
Default principal: boti@REALM

Valid starting    Expires           Service principal
14/02/2013 16:37  15/02/2013 16:37  krbtgt/REALM@REALM

sshでdebian-squeezeにログインしようとすると、パスワードプロンプトが表示されます。この時点で認証を行わずにチケットを確認すると、次のようになります。

Ticket cache: FILE:/tmp/krb5cc_1000
Default principal: boti@REALM

Valid starting    Expires           Service principal
14/02/2013 16:37  15/02/2013 16:37  krbtgt/REALM@REALM
14/02/2013 16:38  15/02/2013 16:37  host/debian-squeeze@
14/02/2013 16:38  15/02/2013 16:37  host/debian-squeeze@REALM

だから私は明らかにチケットを取得します。しかし、sshデバッグログは次のようになります。

Postponed gssapi-with-mic for boti from 192.168.255.98 port 59557 ssh2
debug3: mm_request_send entering: type 40
debug3: mm_request_receive_expect entering: type 41
debug3: mm_request_receive entering
debug3: monitor_read: checking request 40
debug1: Unspecified GSS failure.  Minor code may provide more information
Wrong principal in request

これは、ここここ、およびこのバグレポートで説明さているものと非常によく似ています。

私のDNSは大丈夫です。プリンシパル/キーを再作成しようとしました。したがって、そこに投稿された解決策はありませんでした。

ヒントはありますか?


基本を説明するために、すべてのマシンのクロックが同期されているかどうかを確認しましたか?
chutz

これらはすべて、同じ物理ホストで実行されるlxcコンテナです。時計はこれ以上同期することができませんでした。
b0ti 2013

回答:


7

サンプル出力では、aのキー、つまりdebian-squeezeドットのないホスト名を取得したことがわかります。これは、短い名前を指すように逆方向の解決を設定したことをある程度証明します。これは実際に表示されるFQDN以外の名前ですか、それとも質問用に編集されたものですか?

Kerberosはどちらでも動作するはずですが、ホスト自体がと呼ばれているとホスト自体が考えていることを再確認する必要がありますdebian-squeeze。内部のフォワード->リバースルックアップがdebian-squeeze実際に解決されることを確認しdebian-squeezeます。

$ getent hosts $(hostname) | awk '{print $1; exit}' | xargs getent hosts | awk '{print $2}'

私は、Kerberosが短い名前で展開されることを実際に聞いたことがありません。そのため、選択肢があれば、FQDNを使用することをお勧めします。

更新:

クライアントは現在、短い名前のキーを取得していますが、サーバーは長い名前で適切に名前が付けられていると考えています。おそらく問題があります。念のため、次のことを試してください。

  1. クライアントからの名前の正引き/逆引きを確認します。すなわち

    $ getent hosts debian-squeeze | awk '{print $1; exit}' | xargs getent hosts | awk '{print $2}'
    

    返される名前は、クライアントがチケットを取得しようとする名前です。出力から判断すると、これはおそらく短い名前です。

  2. サーバーに存在するキーを確認します。

    $ sudo klist -k /etc/krb5.keytab
    Keytab name: WRFILE:/etc/krb5.keytab
    KVNO Principal
    ---- --------------------------------------------------------------------------
       1 host/debian-squeeze.realm@REALM
       1 host/debian-squeeze.realm@REALM
       1 host/debian-squeeze.realm@REALM
       1 host/debian-squeeze.realm@REALM
    ...
    

    リストに、前のコマンドのホスト名と一致するプリンシパルが表示されます。そこにない場合は、それが問題です。そこにあるなら...

  3. kerberosサーバーのキーバージョンがのものと同じであることを確認しますdebian-squeeze。クライアントで、明示的にキーを取得し、行の最後にある「KVNO」バージョンを確認します。

    $ kvno host/debian-squeeze.realm
    host/debian-squeeze.realm@REALM: kvno = 1
    

とにかく、これらすべてのコマンドのホスト名と「kvno」バージョンは一致している必要があります。


ホストは、から返される「debian-squeeze」と呼ばれhostnameます。IPはFQDNにマップされるため、指定したコマンドは「debian-squeeze.realm」を返します。補足として、私はこのホストに2つのキーを設定しています。1つはfqdn用で、もう1つは短い名前用です。これはめちゃくちゃですか?
b0ti 2013

非常によく、私はあなたがチェックするべきさらなる事柄で私の答えを更新しました。それはおそらくショートネーム/ FQDNの混乱です。
chutz 2013

どうもありがとう!私の問題は確かに短いホスト名の余分なキーが原因でした。ログが問題のあるプリンシパルが何であるかを示すように、そのような問題をデバッグするのが簡単になることを願っています。
b0ti 2013

0

このエラーは、サーバーの/ etc / hostsに、DNSまたはキータブにあるものと一致しないIPアドレスのエントリが含まれている場合に発生しました。/ etc / hostsからすべての非localhostエントリーをダブルチェック(または削除)しましたか?


DNSは問題ありません。/ etc / hosts内のlocalhostエントリーのみ。
b0ti 2013
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.