我一直试图在没有运气的情况下找出这一天,并最终决定发布关于gerrit配置文件中缺少用户名的问题。我已成功设法单独设置git,gerrit和ldap并使用ldap在gerrit中进行身份验证。但问题是缺少ssh连接所必需的用户名。尝试了gerrit配置的几个变种但没有任何作用。还应该提到当gerrit使用openId时ssh连接有效。
gerrit配置文件
sslVerify = true
server = ldap://xxxxxxxx/
#username = ${username}
accountBase = ou=People,dc=srees,dc=com
accountPattern = (&(objectClass=person)(uid=${username}))
accountSshUserName = ${sAMAccountName.toLowerCase}
#accountSshUsername = sAMAccountName
#accountSshUserName = uid
accountFullName = displayName
accountEmailAddress = mail
groupBase = ou=Groups,dc=srees,dc=com
groupMemberPattern = (&(objectClass=group)(member=${dn}))
答案 0 :(得分:0)
你最终做到了吗?
对我而言,将sslVerify与ldap://(不是ldaps://)协议一起使用似乎很奇怪。用户名选项也应该包含" login"登录LDAP服务器以执行查询。
我没有做任何特别的事情来让Gerrit SSH与AD一起工作。它使用userName属性。
答案 1 :(得分:0)
将LDAP与gerrit一起使用时,重要的一点是要确保accountSshUserName
的填充正确。使用ldap时,gerrit不允许用户手动设置它,它会保持空白,这将导致用户无法通过ssh进行访问。
如果您签入<gerrit-home>/logs/sshd_log
,您可能应该会看到类似以下内容:
[2019-10-16 11:18:59,129 -0400] 5bc68bb1 lmcdipr - AUTH FAILURE FROM xxx.xxx.xxx.xx user-not-found
为确保正确填充用户名,请将accountSshUserName
设置为cn
或您正在使用的任何模式。
示例配置:
server = ldap://ldap
username = cn=admin,dc=example,dc=com
accountBase = dc=example,dc=com
groupBase = dc=example,dc=com
accountPattern = (&(objectClass=person)(cn=${username}))
accountFullName = displayName
accountEmailAddress = mail
accountSshUserName = cn