Elasticsearch Shield插件 - 即使是具有管理员权限的用户,也无法对用户进行身份验证

时间:2016-03-21 23:12:47

标签: elasticsearch elasticsearch-plugin elasticsearch-shield

我遇到了Elasticsearch的Shield插件问题。我已经安装了elasticsearch以便它作为服务运行,我可以看到它在端口9200上运行。

如果我在Mac终端中输入curl http://localhost:9200,我会得到正确的弹性搜索输出...

最近,我一直在尝试从基本身份验证升级到屏蔽身份验证。我使用以下命令安装了shield和license:

/usr/share/elasticsearch/bin/plugin install license/latest
/usr/share/elasticsearch/bin/plugin install shield/latest

此成功安装了屏蔽和许可插件。它们包含在我的Vagrant框中的/ usr / share / elasticsearch / plugins目录中。

所以,现在如果我再次尝试使用curl -XGET http://localhost:9200,我会收到以下回复:

  

{"错误" {" ROOT_CAUSE":[{"类型":" security_exception""理由&#34 ;:"缺少   REST请求的身份验证令牌   [/]""头" {" WWW验证":"具有基本   境界= \"屏蔽\""}}],"类型":" security_exception""理由":&# 34;缺少   REST请求的身份验证令牌   [/]""头" {" WWW验证":"具有基本   境界= \"屏蔽\""}},"状态":401}

这很好。没有适当的身份验证,我无法访问elasticsearch。所以现在我想创建一个用户来对elasticsearch进行身份验证。我使用命令:

sudo ./esusers useradd testuser -p password -r admin

这会创建一个用户' testuser'密码'密码'拥有管理员权限。

我可以使用以下命令验证是否已创建此用户:

sudo ./esusers list

返回:

  

testuser:admin

所以我现在尝试再次使用此用户运行curl命令:

curl -u testuser:password -XGET http://localhost:9200

但是当我在没有管理员用户的情况下尝试时,我收到的错误信息与之前相同。

这是什么问题?为什么我的管理员用户没有进行身份验证?

1 个答案:

答案 0 :(得分:2)

您说您验证的用户是使用sudo ./esusers list创建的,但curl命令仍然失败。有可能您使用自定义目录进行弹性搜索,即使主目录是/usr/share/elasticsearch。因此,esusers/etc/elasticsearch/shield/目录中创建用户,但是如果您使用的话,则需要将它们复制到自定义目录。

我知道你已经解决了这个问题,但我已经回答了这个问题,希望将来可以帮助其他人。你能确认一下自定义目录吗?例如,在我的情况下,自定义目录为/data/elasticsearch,主目录为/usr/share/elasticsearch