在最新版本的ElasticSearch@8.12中,默认是开启了xpack功能的。这个插件的主要功用就是给ElasticSearch增加用户名密码、证书之类的安全防护。那么,无论是对接elastic search head还是kibana的过程中,都是离不开这个鉴权的过程的。所以,本文单独成文。

苏南大叔:ElasticSearch全文搜索引擎,如何重置及自定义用户密码? - 重置管理员密码
ElasticSearch全文搜索引擎,如何重置及自定义用户密码?(图6-1)

大家好,这里是苏南大叔的“程序如此灵动”博客,这里记录苏南大叔和计算机代码的故事。本文描述,如何重置elastic search的密码,可以解决忘记初始密码的问题。本文中还将介绍elastic search不使用xpack的方式,就是说彻底关闭elastic search鉴权的过程。本文测试环境:win10elasticsearch@8.1.2java@11.0.14

忘记初始密码怎么办?

在第一次运行bin/elasticsearch的时候,会输出默认的用户名elastic以及一个随机密码。但是,如果这个随机密码没有保存下来,或者忘记了怎么办呢?

答案就是运行官方的重置密码程序:

bin/elasticsearch-reset-password -u <username>

elasticsearch内置了很多用户,比如kibana-system之类的特殊用户。但是,具有更广阔的使用场景的用户名,还是默认的elastic,所以大多数情况下,需要运行的语句是:

bin/elasticsearch-reset-password -u elastic

苏南大叔:ElasticSearch全文搜索引擎,如何重置及自定义用户密码? - 重置密码
ElasticSearch全文搜索引擎,如何重置及自定义用户密码?(图6-2)

注意:运行此命令的时候,需要启动elasticsearch,否则会报错。启动的方式是:

bin/elasticsearch
还有个elasticsearch-setup-passwords工具,但是这个工具只能在没有被初始化的时候使用,基本上没有使用的场景。所以暂时略过。

使用自定义密码

上一个功能里面可以把密码重置为随机,本功能里面说如何修改密码,这个前提是您已经可以正常运行elasticsearch。官方文档是:

对,是的,由于elasticsearch本身没有界面,所以修改密码的操作看起来是非常复杂的。但是,这些都是elasticsearch的基本操作,如果不能正确执行的话,也没有必要学习elasticsearch了。

里面提到修改方式是:

POST /_security/user/<user>/_password
{
  "password" : "new-password"
}

对于默认安装情况下的elasticsearch来说,要修改默认的elastic用户密码,目前这个完成的方式就是:

参数内容
urlhttps://localhost:9200/_security/user/elastic/_password
Authorizationbasic base64_string_of_user:password
methodPOST
content{"password" : "new-password"}

大家可以用自己熟悉的方式来完成这个请求,比如:curl/postman/kibana等等。如果执行成功了,这里会得到一个{}的回显信息。

下面的是苏南大叔使用wisdom restclient做这个请求的截图:

苏南大叔:ElasticSearch全文搜索引擎,如何重置及自定义用户密码? - restfulclient
ElasticSearch全文搜索引擎,如何重置及自定义用户密码?(图6-3)

其中Authorization鉴权的内容格式是:<base64><base64>是对用户名:密码字符串进行base64加密得到的字符串。(自行找办法获得base64字符串,这个难不倒程序员吧?)这里有个网站,也许用得到:

上述截图中的工具下载地址:

下图是在kibana里面的相同操作的截图:

苏南大叔:ElasticSearch全文搜索引擎,如何重置及自定义用户密码? - 利用kibana修改es密码
ElasticSearch全文搜索引擎,如何重置及自定义用户密码?(图6-4)

无论使用什么方式,都要考虑要解决的问题是:

  • 鉴权问题,如何发送用户名密码呢?
  • https 证书问题,怎么过这个证书呢?

另外,也不一定会修改成功,这里存在由于elasticsearch的原因,导致的错误发生。

不使用用户名密码

修改配置文件config/elasticsearch.yml,就可以实现“裸奔”不需要用户名密码的效果。修改的项目是:

xpack.security.enabled: true

修改为:

xpack.security.enabled: false

苏南大叔:ElasticSearch全文搜索引擎,如何重置及自定义用户密码? - 修改配置文件
ElasticSearch全文搜索引擎,如何重置及自定义用户密码?(图6-5)

修改保存,重启生效。这个配置下,可以直接访问还是http9200即可,不需要用户名密码。

苏南大叔:ElasticSearch全文搜索引擎,如何重置及自定义用户密码? - 不需要用户名密码
ElasticSearch全文搜索引擎,如何重置及自定义用户密码?(图6-6)

如果您要使用https的话,记得信任证书到“受信任的证书机构”区域。

参考文献

综述

要想使用好ElasticSearch工具,首要解决的问题就是用户名和密码的问题。所以,本文中的内容,是熟练掌握ElasticSearch的基础内容。

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。