Аутентификация с открытым ключом для пользователей LDAP с использованием локальных авторизованных ключей

3

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

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

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

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

Отладочный вывод при выполнении 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 устранил проблему. Я ценю вашу помощь и терпение!

bkeyser5280
источник
пожалуйста, зайдите LogLevelхотя бы DEBUGна сервер, попробуйте еще раз и опубликуйте логи с сервера ( /var/log/secureили jourtnalctl -e). Следует указать причину отклонения открытого ключа.
Jakuje
Проверьте также разрешения /и /home.
Jakuje
Да. Это выглядит справедливо. Но я (мы) забыл о SELinux. SELinux включен? Каковы соответствующие ярлыки на этих файлах? ls -lZ / /home /home/ldapuser /home/ldapuser/.ssh /home/ldapuser/.ssh/authorized_keys? Бег restorecon -rf /home/ldapuser/должен их исправить.
Jakuje
Добавлено как ответ. Пожалуйста, уделите секунду, чтобы выбрать ответ, а не копировать ответ в тело вопроса.
Jakuje

Ответы:

1

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

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

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

Jakuje
источник
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 и т. Д.

чепуха
источник