debian squeeze에서“요청의 잘못된 주체 / 클라이언트 자격 증명이 없음”으로 SSH Kerberos 인증이 실패 함 Service principal 14/02/2013 16:37

암호 프롬프트없이 kerberos로 로그인 할 수없는 데비안 스퀴즈 호스트가 있습니다. 동일하게 구성된 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는 괜찮습니다. 이미 주체 / 키를 재 작성하려고했습니다. 그래서 거기에 게시 된 솔루션 중 어느 것도 도움이되지 않았습니다.

힌트가 있습니까?



답변

샘플 출력에서 ​​나는 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”버전이 일치해야합니다.


답변

서버의 / etc / hosts에 DNS 또는 키탭에있는 것과 일치하지 않는 IP 주소 항목이 포함 된 경우이 오류가 발생했습니다. / etc / hosts에서 모든 비 로컬 호스트 항목을 두 번 확인했거나 제거 했습니까?