Не могу войти в Kerberos

3225
Thanatos

Я не могу войти в Kerberos.

Я переделан rsyslogдля записи *.debugна /var/log/debug, выход которого ниже.

Если я пытаюсь войти в систему ssh, я получаю:

Jun 6 23:13:05 foo-machine sshd[13965]: Invalid user roy from 204.28.116.34 Jun 6 23:13:05 foo-machine sshd[13965]: input_userauth_request: invalid user roy [preauth] Jun 6 23:13:06 foo-machine sshd[13965]: pam_krb5(sshd:auth): pam_sm_authenticate: entry (nonull) Jun 6 23:13:06 foo-machine sshd[13965]: pam_krb5(sshd:auth): (user roy) attempting authentication as roy@EXAMPLE.COM Jun 6 23:13:06 foo-machine sshd[13965]: pam_krb5(sshd:auth): (user roy) krb5_get_init_creds_password: Decrypt integrity check failed Jun 6 23:13:06 foo-machine sshd[13965]: pam_krb5(sshd:auth): authentication failure; logname=roy uid=0 euid=0 tty=ssh ruser= rhost=204.28.116.34 Jun 6 23:13:06 foo-machine sshd[13965]: pam_krb5(sshd:auth): pam_sm_authenticate: exit (failure) Jun 6 23:13:06 foo-machine sshd[13965]: pam_unix(sshd:auth): check pass; user unknown Jun 6 23:13:06 foo-machine sshd[13965]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=204.28.116.34 Jun 6 23:13:06 foo-machine sshd[13965]: Libgcrypt warning: missing initialization - please fix the application Jun 6 23:13:07 foo-machine sshd[13965]: Failed password for invalid user roy from 204.28.116.34 port 30760 ssh2 

(Обратите внимание, что я хорошо известен, что «Расшифровать проверку целостности не удалась» означает «неправильный пароль». Пароль, который я снабдил это правильно.)

Если я пытаюсь войти в систему login, я получаю:

Jun 6 22:55:58 foo-machine login[13003]: pam_krb5(login:auth): pam_sm_authenticate: entry Jun 6 22:56:00 foo-machine login[13003]: pam_krb5(login:auth): (user roy) attempting authentication as roy@EXAMPLE.COM Jun 6 22:56:00 foo-machine login[13003]: pam_krb5(login:auth): user roy authenticated as roy@EXAMPLE.COM Jun 6 22:56:00 foo-machine login[13003]: pam_krb5(login:auth): (user roy) temporarily storing credentials in /tmp/krb5cc_pam_98AyqH Jun 6 22:56:00 foo-machine login[13003]: pam_krb5(login:auth): pam_sm_authenticate: exit (success) Jun 6 22:56:00 foo-machine login[13003]: Libgcrypt warning: missing initialization - please fix the application Jun 6 22:56:00 foo-machine login[13003]: pam_krb5(login:account): pam_sm_acct_mgmt: entry Jun 6 22:56:00 foo-machine login[13003]: pam_krb5(login:account): (user roy) retrieving principal from cache Jun 6 22:56:00 foo-machine login[13003]: pam_krb5(login:account): pam_sm_acct_mgmt: exit (success) Jun 6 22:56:00 foo-machine login[13003]: pam_mail(login:session): user unknown Jun 6 22:56:00 foo-machine login[13003]: pam_umask(login:session): account for roy not found Jun 6 22:56:00 foo-machine login[13003]: pam_krb5(login:session): (user roy) getpwnam failed for roy Jun 6 22:56:00 foo-machine login[13003]: pam_unix(login:session): session opened for user roy by root(uid=0) Jun 6 22:56:00 foo-machine login[13003]: User not known to the underlying authentication module 

Если я пытаюсь пройти аутентификацию kinit, все идет хорошо:

# kinit -V roy@EXAMPLE.COM Using default cache: /tmp/krb5cc_0 Using principal: roy@EXAMPLE.COM Password for roy@EXAMPLE.COM: Authenticated to Kerberos v5 # 

/etc/pam.d/common-account:

# here are the per-package modules (the "Primary" block) account [success=2 new_authtok_reqd=done default=ignore] pam_krb5.so minimum_uid=1000 debug account [success=1 new_authtok_reqd=done default=ignore] pam_unix.so # here's the fallback if no module succeeds account requisite pam_deny.so # prime the stack with a positive return value if there isn't one already; # this avoids us returning an error just because nothing sets a success code # since the modules above will each just jump around account required pam_permit.so # and here are more per-package modules (the "Additional" block) # end of pam-auth-update config 

Обратите внимание, что я сделал модификацию здесь; account ... pam_krb5Первоначально находился в «Дополнительном блоке», но, учитывая, что pam_denyон установлен requisite, мне не было ясно, как pam_krb5можно было достичь. Таким образом, я переместил это. Следующие два файла не тронуты мной:

/etc/pam.d/common-auth:

# here are the per-package modules (the "Primary" block) auth [success=4 default=ignore] pam_krb5.so minimum_uid=1000 debug auth [success=3 default=ignore] pam_unix.so nullok_secure try_first_pass auth [success=2 default=ignore] pam_ccreds.so minimum_uid=1000 action=validate use_first_pass auth [default=ignore] pam_ccreds.so minimum_uid=1000 action=update # here's the fallback if no module succeeds auth requisite pam_deny.so # prime the stack with a positive return value if there isn't one already; # this avoids us returning an error just because nothing sets a success code # since the modules above will each just jump around auth required pam_permit.so # and here are more per-package modules (the "Additional" block) auth optional pam_ccreds.so minimum_uid=1000 action=store auth optional pam_cap.so # end of pam-auth-update config 

/etc/pam.d/common-session:

# here are the per-package modules (the "Primary" block) session [default=1] pam_permit.so # here's the fallback if no module succeeds session requisite pam_deny.so # prime the stack with a positive return value if there isn't one already; # this avoids us returning an error just because nothing sets a success code # since the modules above will each just jump around session required pam_permit.so # The pam_umask module will set the umask according to the system default in # /etc/login.defs and user settings, solving the problem of different # umask settings with different shells, display managers, remote sessions etc. # See "man pam_umask". session optional pam_umask.so # and here are more per-package modules (the "Additional" block) session [success=1 default=ignore] pam_krb5.so minimum_uid=1000 session required pam_unix.so session optional pam_systemd.so # end of pam-auth-update config 

Небольшое замечание: Apache DS - это мой сервер LDAP и KDC. ( /etc/krb5.confуказывает на это.) (Поскольку OpenLDAP / «обычный» Kerberos оказался невозможным для настройки; Apache стал проще, но, увы, он все еще не работает.)

Почему я не могу войти?

1
Вы когда-нибудь решали это? У меня очень похожая проблема: https://unix.stackexchange.com/questions/166135/cant-login-to-debian-7-7-with-kerberos-nis-user David Mackintosh 9 лет назад 1
@DavidMackintosh: Нет :-( Thanatos 9 лет назад 0
@DavidMackintosh: IIRC, я * думаю *, есть нечто, называемое "nss", которое используется для поиска деталей пользователя (в основном, делегатов getpwent для него), и у меня не было этой настройки. Но я не уверен, правда ли это или правильно - никогда не было времени попробовать. Thanatos 9 лет назад 0
@DavidMackintosh: Извините за спам в комментариях, я только что посмотрел на ваш вопрос. «Это приводит меня к мысли, что это проблема с моим /etc/nsswitch.conf» <- это то, что я имел в виду выше. Я думал, что это тоже была моя проблема, но я так и не смог понять, что это за файл или что мне нужно с ним делать. Thanatos 9 лет назад 0

1 ответ на вопрос

-1
SorinS

Ваш SSH-сервер настроен для Kerberos? Например

KerberosAuthentication yes KerberosTicketCleanup yes GSSAPIAuthentication yes GSSAPICleanupCredentials yes UseDNS yes 

Из того, что я вижу выше, SSH пытается войти в систему с учетными данными, а не путем предоставления билета Kerberos (который вы можете получить, используя kinit на стороне клиента). Конечно, как вы указали выше, kinit работает на вашем клиенте, и это хорошо. Не могли бы вы опубликовать журналы отладки SSH / SSHD?

Похожие вопросы