3

Мы используем LDAP для информации об учетной записи. Среда настроена следующим образом ...

  • Сервер каталогов CentOS 7 OpenLDAP
  • Клиент CentOS 7, настроенный на использование сервера каталогов
    • authconfig используется для настройки клиента CentOS 7 для аутентификации LDAP

Я заметил следующее

  • Локальный пользователь (тот, чья информация об учетной записи находится в /etc /passwd) может подключиться к ssh самому клиенту без использования аутентификации с открытым ключом (без пароля)
  • Пользователь LDAP может подключиться к клиенту с помощью пароля
  • Пользователь LDAP не может подключиться к ssh к клиенту с использованием аутентификации с открытым ключом. У пользователя есть правильно настроенные ssh-ключи (id_rsa.pub , id_rsa) и авторизованные ключи, аналогичные локальному пользователю.

Отладочный вывод при выполнении SSH с использованием локального пользователя

debug1: Offering RSA public key: /home/localuser/.ssh/id_rsa
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug1: Server accepts key: pkalg ssh-rsa blen 279

Отладочный вывод при выполнении ssh с использованием пользователя LDAP

debug1: Offering RSA public key: /home/ldapuser/.ssh/id_rsa
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic

Журнал /var /log /secure содержит следующую запись после попытки пользователя LDAP подключиться с использованием аутентификации с открытым ключом.

Mar 19 16:47:01 localhost sshd[20539]: Connection closed by x.x.x.x [preauth]

LDAP может найти учетную запись пользователя

$ getent passwd ldapuser
ldapuser:x:5001:5000::/home/ldapuser:/bin/bash

Когда ssh позволяет PasswordAuthentication

$ ssh test
ldapuser@test's password: 
Last failed login: Sat Mar 19 17:08:29 UTC 2016 from x.x.x.x on ssh:notty
Last login: Sat Mar 19 15:55:40 2016

Я понимаю, что есть альтернативы, такие как OpenSSH-LPK, но хотел бы иметь возможность использовать локальные авторизованные ключи, установленные с помощью Puppet, так как он не требует обслуживания LDAP. Я не уверен, возможен ли такой подход и, если это возможно, конфигурации sshd, PAM или LDAP. Любые указатели будут оценены ...


Следуя предложению Jakuje об установке уровня журнала в DEBUG для sshd, журналы содержали ключ к пониманию:

Mar 19 18:22:42 localhost sshd[20934]: debug1: temporarily_use_uid: 5001/5000 (e=0/0)
Mar 19 18:22:42 localhost sshd[20934]: debug1: trying public key file /home/ldapuser/.ssh/authorized_keys
Mar 19 18:22:42 localhost sshd[20934]: debug1: Could not open authorized keys '/home/ldapuser/.ssh/authorized_keys': Permission denied
Mar 19 18:22:42 localhost sshd[20934]: debug1: restore_uid: 0/0

Каталоги / и / home имеют следующие разрешения

$ ll -and / /home
dr-xr-xr-x. 17 0 0 4096 Feb 22 17:26 /
drwxr-xr-x.  5 0 0   45 Mar 19 03:05 /home

Каталог /home /ldapuser имеет следующие разрешения

$ ll -an .
drwxr-xr-x. 3 5001 5000  99 Mar 19 16:46 .
drwxr-xr-x. 5    0    0  45 Mar 19 03:05 ..
drwx------. 2 5001 5000  76 Mar 19 02:45 .ssh

Каталог /home/ldapuser/.ssh имеет следующие разрешения

$ ll -an .
total 16
drwx------. 2 5001 5000   76 Mar 19 02:45 .
drwxr-xr-x. 3 5001 5000   99 Mar 19 16:46 ..
-rw-r--r--. 1 5001 5000  419 Mar 19 02:45 authorized_keys
-rw-------. 1 5001 5000 1679 Mar 19 02:45 id_rsa
-rw-r--r--. 1 5001 5000  419 Mar 19 02:45 id_rsa.pub
-rw-r--r--. 1 5001 5000  177 Mar 19 02:45 known_hosts

Демон sshd устанавливает для действующего пользователя значение 5001/5000, и поэтому я не уверен, почему в разрешении будет отказано. Пользователь root может переключиться на ldapuser, чтобы система знала о нем.


Jakuje: Большое спасибо! SELinux был причиной проблемы, и запуск restorecon устранил проблему. Я ценю вашу помощь и терпение!

2 ответа2

1

SELinux включен? Каковы соответствующие ярлыки на этих файлах?

ls -lZ /home/ldapuser /home/ldapuser/.ssh /home/ldapuser/.ssh/authorized_keys

Запуск restorecon -rf /home/ldapuser/ должен исправить проблемы.

0

Домашний каталог пользователя LDAP должен принадлежать пользователю UID LDAP. То же самое с каталогом .ssh внутри дома пользователя LDAP и открытым ключом (author_keys) внутри каталога .ssh.

Пример:

mkdir -p /home/ldapuser/.ssh

cp authorized_keys /home/ldapuser/.ssh

getent passwd
...
kibosh:*:6035:100:kibosh:/home/kibosh:/bin/bash
ldapuser:*:6036:100:ldapuser:/home/ldapuser:/bin/bash

chmod -R 6036:users /home/ldapuser

ls -l /home
drwxr-xr-x  4 ldapuser         users      4096 Nov  2 10:40 ldapuser
...

Примечание: gid 100 - это гид локальной группы пользователей в моей системе.

Также убедитесь, что права доступа правильны для $ HOME/.ssh и $ HOME/.ssh/authorized_keys и т.д.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .