我遇到了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
但是当我在没有管理员用户的情况下尝试时,我收到的错误信息与之前相同。
这是什么问题?为什么我的管理员用户没有进行身份验证?
答案 0 :(得分:2)
您说您验证的用户是使用sudo ./esusers list
创建的,但curl命令仍然失败。有可能您使用自定义目录进行弹性搜索,即使主目录是/usr/share/elasticsearch
。因此,esusers
在/etc/elasticsearch/shield/
目录中创建用户,但是如果您使用的话,则需要将它们复制到自定义目录。
我知道你已经解决了这个问题,但我已经回答了这个问题,希望将来可以帮助其他人。你能确认一下自定义目录吗?例如,在我的情况下,自定义目录为/data/elasticsearch
,主目录为/usr/share/elasticsearch