Назад | Перейти на главную страницу

Samba 4 и SSH без пароля

У меня вопрос к Samba 4 и Kerberos. У меня был работающий SSH с SSO. Но теперь, когда я установил Samba 4, она не работает, и кажется, что еще никто не нашел решения. Я только что прочитал, что это было действительно сложно и сложно или В Windows все работает нормально, но в Linux пока нет. и так далее.

Проблема в том, что Samba 4 по-другому реализует Kerberos. И, похоже, это как-то несовместимо с такими инструментами Linux, как SSH. Когда я бегу sshd в режиме отладки я вижу, что он пишет:

debug1: Unspecified GSS failure.  Minor code may provide more information
No key table entry found matching host/bolbro.barbucha.local@

Но я не могу добавить такого принципала в основную базу данных Samba. (Хотя его не существует, samba-tool spn add пишет, что на него влияет другой пользователь.)

Мой пост может звучать сбивчиво, но должен сказать, что я еще не совсем понимаю, в чем дело, и могу неправильно использовать в своем тексте некоторые термины. У кого-нибудь есть опыт работы с Samba 4 и SSH-клиентом без пароля? Вы когда-нибудь преуспевали в Samba 4 и SSO на клиенте Linux?

Большое спасибо за любой намек или объяснение. (Я использую Debian Squeeze, Bolbro - это машина, Samba 4 и SSHD работают. Та же проблема влияет на ksu также.)

К сожалению, пока не нашел решения этой проблемы, но на моем компьютере сейчас работает нечто подобное. Чтобы NSLCD работал с использованием GSSAPI, я сделал эти команды на стороне сервера:

#create an user with a random password
samba-tool user add --random-password ldap-connect
#the password must not expire
samba-tool user setexpiry --noexpiry ldap-connect
#create a SPN (security principal name)
samba-tool spn add nslcd/bolbro.barbucha.local ldap-connect
#export key table of the user ldap-connect
samba-tool domain exportkeytab krb5.nslcd.keytab --principal=ldap-connect

Каждый участник безопасности (nslcd) назначается машине (bolbro.barbucha.local), а служба, использующая это SPN, аутентифицируется как пользователь (ldap-connect). Всегда может быть только один участник безопасности <услуга> / <машина>. Вы не можете создать nslcd/bolbro.barbucha.local снова и назначить его другому пользователю. Субъект безопасности host/bolbro.barbucha.local уже существует. Сегодня я думаю, что может быть достаточно просто экспортировать ключевую таблицу пользователя, которому назначено критическое SPN.

Посмотрим…

Heuréka!

Я нашел решение сегодня (2014-03-02). Да, это действительно так. Я сделал следующие шаги:

  • присоединил клиента к домену: net ads join -U administrator, где net одна из утилит Samba
  • некомментируемый внутри /etc/ssh/sshd_config на стороне сервера и /etc/ssh/ssh_config на стороне клиента линия GSSAPIAuthentication no и перезаписал no с участием yes; включен аналогично GSSAPIDelegateCredentials на стороне клиента
  • выполняется с обеих сторон команда net ads keytab create чтобы экспортировать необходимые ключи в /etc/krb5.keytab
  • добавлено полное имя сервера в /etc/hosts на стороне сервера

Я не знаю почему, но когда я казнил sshd на стороне сервера в режиме отладки (/usr/sbin/sshd -d), Я увидел сообщение, что есть не найдена запись в таблице ключей, соответствующая host / bolbro @. Ожидаемое имя сервера (указано klist -k /etc/krb5.keytab на стороне сервера) bolbro.barbucha.local. Добавить IP-адрес сервера и полное имя bolbro.barbucha.local к /etc/hosts решил проблему.