Elasticsearch Shield Plugin - 用户无法通过身份验证,即使是具有管理员权限的用户
Elasticsearch Shield Plugin - Users can not be authenticated, even users with Admin Privileges
我在使用 Elasticsearch 的 Shield 插件时遇到问题。我已经安装了 elasticsearch,因此它 运行s 作为一项服务,我可以看到它在端口 9200 上 运行ning。
如果我在 Mac 终端中输入 curl http://localhost:9200
,我会得到正确的 elasticsearch 输出...
最近一直在尝试从基本认证升级到屏蔽认证。我使用以下命令安装了防护罩和许可证:
/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
,我会得到以下响应:
{"error":{"root_cause":[{"type":"security_exception","reason":"missing
authentication token for REST request
[/]","header":{"WWW-Authenticate":"Basic
realm=\"shield\""}}],"type":"security_exception","reason":"missing
authentication token for REST request
[/]","header":{"WWW-Authenticate":"Basic
realm=\"shield\""}},"status":401}
这很好。没有适当的身份验证,我无法访问 elasticsearch。所以现在我想创建一个用户来对 elasticsearch 进行身份验证。我使用命令:
sudo ./esusers useradd testuser -p password -r admin
这将创建一个用户 'testuser',密码 'password',具有管理员权限。
我可以使用以下命令验证此用户是否已创建:
sudo ./esusers list
这个returns:
testuser : admin
所以我现在尝试对这个用户再次 运行 curl 命令:
curl -u testuser:password -XGET http://localhost:9200
但是我在没有管理员用户的情况下尝试时收到与以前相同的错误消息。
这里有什么问题?为什么我的管理员用户没有进行身份验证?
您说您已验证用户是使用 sudo ./esusers list
创建的,但 curl 命令仍然失败。即使主目录是 /usr/share/elasticsearch
,您也有可能为 elasticsearch 使用自定义目录。因此,esusers
在 /etc/elasticsearch/shield/
目录中创建了用户,但如果您正在使用它们,则需要将它们复制到自定义目录。
我知道您以不同的方式解决了这个问题,但我回答这个问题是希望它能对以后的其他人有所帮助。你能确认一下自定义目录吗?例如,在我的例子中,自定义目录是 /data/elasticsearch
而主目录是 /usr/share/elasticsearch
我在使用 Elasticsearch 的 Shield 插件时遇到问题。我已经安装了 elasticsearch,因此它 运行s 作为一项服务,我可以看到它在端口 9200 上 运行ning。
如果我在 Mac 终端中输入 curl http://localhost:9200
,我会得到正确的 elasticsearch 输出...
最近一直在尝试从基本认证升级到屏蔽认证。我使用以下命令安装了防护罩和许可证:
/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
,我会得到以下响应:
{"error":{"root_cause":[{"type":"security_exception","reason":"missing authentication token for REST request [/]","header":{"WWW-Authenticate":"Basic realm=\"shield\""}}],"type":"security_exception","reason":"missing authentication token for REST request [/]","header":{"WWW-Authenticate":"Basic realm=\"shield\""}},"status":401}
这很好。没有适当的身份验证,我无法访问 elasticsearch。所以现在我想创建一个用户来对 elasticsearch 进行身份验证。我使用命令:
sudo ./esusers useradd testuser -p password -r admin
这将创建一个用户 'testuser',密码 'password',具有管理员权限。
我可以使用以下命令验证此用户是否已创建:
sudo ./esusers list
这个returns:
testuser : admin
所以我现在尝试对这个用户再次 运行 curl 命令:
curl -u testuser:password -XGET http://localhost:9200
但是我在没有管理员用户的情况下尝试时收到与以前相同的错误消息。
这里有什么问题?为什么我的管理员用户没有进行身份验证?
您说您已验证用户是使用 sudo ./esusers list
创建的,但 curl 命令仍然失败。即使主目录是 /usr/share/elasticsearch
,您也有可能为 elasticsearch 使用自定义目录。因此,esusers
在 /etc/elasticsearch/shield/
目录中创建了用户,但如果您正在使用它们,则需要将它们复制到自定义目录。
我知道您以不同的方式解决了这个问题,但我回答这个问题是希望它能对以后的其他人有所帮助。你能确认一下自定义目录吗?例如,在我的例子中,自定义目录是 /data/elasticsearch
而主目录是 /usr/share/elasticsearch