web-dev-qa-db-ja.com

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

パスワードプロンプトがないと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は大丈夫です。プリンシパル/キーを再作成しようとしました。そのため、そこに投稿されたソリューションは役に立ちませんでした。

ヒントはありますか?

8
b0ti

サンプル出力では、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」バージョンは一致している必要があります。

6
chutz

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

0
slushpupie

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

0
chutz