ldap authorizedkeyscommand 失败状态 255

ldap authorizedkeyscommand 失败状态 255

我有一个用户无法使用来自 LDAP 服务器的公钥登录到我们的一个 Centos7 机器。

sshd 记录的错误消息(DEBUG 模式开启)是error: AuthroizedKeysCommand /usr/libexec/openssh/ssh-ldap-wrapper userx failed, status 255

以 root 身份运行ssh-ldap-wrapper userx我可以确认它确实连接到 LDAP 服务器并为该用户打印出正确的公钥。

包装器的权限为 755。我们有另一个 Centos7 盒子,用户可以毫无问题地登录。唉,我找不到有什么不同。

配置sshd_config为:

AuthorizedKeysCommand /usr/libexec/openssh/ssh-ldap-wrapper
AuthorizedKeysCommandUser root
PubkeyAuthentication yes
AllowGroups groupA groupB

并且userx已经被分配groupB给我们的 LDAP 服务器。

Google 仅提供了与某些错误相关的搜索结果,但我发现没有一个能起到帮助作用 - 或者至少目前还无法弄清楚有什么作用。

我缺少什么设置才能让用户使用存储在我们的 LDAP 服务器中的公钥登录?

编辑:附加信息

# ls -Z /usr/libexec/openssh/ssh-ldap-wrapper
-rwxr-xr-x. root root system_u:object_r:bin_t:s0       /usr/libexec/openssh/ssh-ldap-wrapper
# cat /usr/libexec/openssh/ssh-ldap-wrapper
#!/bin/sh

exec /usr/libexec/openssh/ssh-ldap-helper -s "$1"

该选项-s需要用户名来检查 LDAP 服务器的凭证。

ldap-helper 的配置似乎在 内/etc/ssh/ldap.conf。其中包含以下两行

openssh_ldap_loglevel debug
openssh_ldap_logfile /var/log/openssh-ldap.log

但该日志文件尚未创建。

答案1

在 CentOS 7 中,此脚本应默认以用户“nobody”身份运行。

我怀疑您已将其更改为以 root 身份运行,并且 SELinux 已因权限增加而参与其中。


对于未来的读者来说,我在 /etc/openldap/cacert.pem 上的权限为 600

我通过运行以下命令识别了这一点:

su nobody -s /bin/bash -c "strace   /usr/libexec/openssh/ssh-ldap-helper -s root -v "

输出中隐藏的内容为:

open("/etc/openldap/cacert.pem", O_RDONLY) = -1 EACCES (Permission denied)

解决办法是sudo chmod 644 /etc/openldap/cacert.pem

相关内容