Authentication of elastic was terminated by realm reserved – How to solve related issues

本文档介绍了Elasticsearch中身份验证的过程和不同类型的 realms,特别是'预留realm'、'本地realm'和'文件realm'。当出现'Authentication of Elastic terminated by realm [reserved]'的日志错误时,意味着提供的用户名或密码与存储的凭证不匹配。为解决此问题,你需要启用安全性设置,设置内置用户密码并重启Elasticsearch。如果忘记密码,可以按照链接中的步骤重置。此外,文章还提及了插件的安装、删除和常见权限问题。

Before you begin reading this guide, we recommend you run the Elasticsearch Error Check-Up which can resolve issues that cause many errors.

This guide will help you check for common problems that cause the log “Authentication of Elastic was terminated by realm [reserved]” to appear. It’s important to understand how authentication works and what role realms play in the process, so read the guide below and follow the steps to resolve this error.

What does authentication mean in Elasticsearch?

Authentication refers to the process or action of verifying the identity of a user or process. Elastic stack authenticates the user by identifying and verifying them. The authentication process is handled by one or more authentication services called realms. 

There are various types of realms. Reserved realm is the realm containing the built-in users. Then, there’s the native realm for users defined through the security API (and/or inside Kibana). Lastly, file realm is for users defined in security files on disk.

What this error means

This log message is an INFO message saying that the credentials with which you are trying to authenticate do not match the saved credentials. You will not be able to use the ES cluster, until and unless the username and password match, i.e. until authentication is successful.

How to reproduce this log

First, you need to enable the security settings of Elasticsearch.

Enable security features

To enable security features on the node, turn on the xpack.security.enabled setting. You need to add this setting in the elasticsearch.yml configuration file.

xpack.security.enabled: true

Setting built-in user password

The next step is to set the built-in user credentials, using this command: 

bin/elasticsearch-setup-passwords interactive

Restart Elasticsearch

  1. After setting up the password, you need to restart Elasticsearch. By now, Elasticsearch should be running on port 9200. 
  2. Now go to your browser, and hit http://localhost:9200
  3. After hitting that URL, a pop up will open, asking for sign in credentials that you have set while setting the built-in user passwords. 
  4. If either the username or the password does not match with the saved credentials, the following logs will be generated.

The logs generated are:

[INFO ][o.e.x.s.a.AuthenticationService] Authentication of [elastic] was terminated by realm [reserved] - failed to authenticate user [elastic]

Quick troubleshooting steps

You need to enter the correct username and password that should match with the credentials that you have set while setting the built-in user password.

If by any chance you’ve forgotten the password, you can reset the password by following the steps mentioned in this post.

https://www.youtube.com/embed/lY4-C0ZZyeY?autoplay=1

Overview

A plugin is used to enhance the core functionalities of Elasticsearch. Elasticsearch provides some core plugins as a part of their release installation. In addition to those core plugins, it is possible to write your own custom plugins as well. There are several community plugins available on GitHub for various use cases.

Examples

Get all of the instructions for the plugin:

sudo bin/elasticsearch-plugin -h

Installing the S3 plugin for storing Elasticsearch snapshots on S3:

sudo bin/elasticsearch-plugin install repository-s3

Removing a plugin:

sudo bin/elasticsearch-plugin remove repository-s3

Installing a plugin using the file’s path:

sudo bin/elasticsearch-plugin install file:///path/to/plugin.zip

Notes and good things to know

  • Plugins are installed and removed using the elasticsearch-plugin script, which ships as a part of the Elasticsearch installation and can be found inside the bin/ directory of the Elasticsearch installation path.
  • A plugin has to be installed on every node of the cluster and each of the nodes has to be restarted to make the plugin visible.
  • You can also download the plugin manually and then install it using the elasticsearch-plugin install command, providing the file name/path of the plugin’s source file.
  • When a plugin is removed, you will need to restart every Elasticsearch node in order to complete the removal process.

Common issues

  • Managing permission issues during and after plugin installation is the most common problem. If Elasticsearch was installed using the DEB or RPM packages then the plugin has to be installed using the root user. Otherwise you can install the plugin as the user that owns all of the Elasticsearch files.
  • In the case of DEB or RPM package installation, it is important to check the permissions of the plugins directory after you install it. You can update the permission if it has been modified using the following command:

chown -R elasticsearch:elasticsearch path_to_plugin_directory

  • If your Elasticsearch nodes are running in a private subnet without internet access, you cannot install a plugin directly. In this case, you can simply download the plugins and copy the files inside the plugins directory of the Elasticsearch installation path on every node. The node has to be restarted in this case as well.

Log Context

Log “Authentication of [{}] was terminated by realm [{}] – {}” classname is AuthenticationService.java.
We extracted the following from Elasticsearch source code for those seeking an in-depth context :

userListener.onResponse(result.getUser());

} else {

// the user was not authenticated; call this so we can audit the correct event

request.realmAuthenticationFailed(authenticationToken; realm.name());

if (result.getStatus() == AuthenticationResult.Status.TERMINATE) {

logger.info("Authentication of [{}] was terminated by realm [{}] - {}";

authenticationToken.principal(); realm.name(); result.getMessage());

Exception e = (result.getException() != null) ? result.getException()

: Exceptions.authenticationError(result.getMessage());

userListener.onFailure(e);

} else {

Run the Check-Up to get a customized report like this:

https://opster.com/wp-content/uploads/2021/06/check-up-event-with-zoom.mp4

Elasticsearch 中,用户 `[elastic]` 认证失败并提示 `realm reserved` 错误通常与安全配置或用户凭证相关。以下是可能导致此问题的几个常见原因及解决方法: ### 用户凭证错误 最常见的情况是用户 `elastic` 的密码输入错误。Elasticsearch 提供了内置的超级用户账户 `elastic`,该账户默认具有所有权限。如果密码错误,会导致认证失败。可以通过以下命令重置 `elastic` 用户的密码: ```bash bin/elasticsearch-reset-password -u elastic ``` 该命令会提示设置新密码,并将其应用到 Elasticsearch 安全功能中[^1]。 ### 安全功能未启用 如果 Elasticsearch 的安全功能未启用,则无法进行用户认证。可以在 `elasticsearch.yml` 配置文件中启用安全功能: ```yaml xpack.security.enabled: true xpack.security.transport.ssl.enabled: true xpack.security.http.ssl.enabled: true ``` 启用后,重启 Elasticsearch 服务以使更改生效。 ### Realm 配置问题 提示 `realm reserved` 表示 Elasticsearchrealm 配置存在问题。RealmElasticsearch 用于处理用户认证的组件。内置的 `reserved` realm 用于管理超级用户,如 `elastic`、`kibana` 和 `logstash` 等。如果这些用户的认证失败,可能是由于 realm 配置被修改或禁用。确保 `elasticsearch.yml` 中的 realm 配置未被更改,并且保留默认的 `reserved` realm 设置。 ### SSL/TLS 配置问题 如果启用了 HTTPS,则需要确保客户端使用正确的 SSL/TLS 配置进行连接。可以使用以下命令测试连接: ```bash curl -k -u elastic https://localhost:9200 ``` 其中 `-k` 参数用于忽略 SSL 证书验证(仅用于测试环境),`-u elastic` 表示使用 `elastic` 用户进行认证。如果仍然无法认证,可能是 SSL 证书配置问题,需要检查证书路径和权限设置。 ### 日志分析 Elasticsearch 的日志文件通常位于 `logs/elasticsearch.log`,可以通过查看日志获取更详细的错误信息。日志中可能会记录认证失败的具体原因,例如密码错误、realm 配置问题等。 ### 示例代码:测试认证 以下是一个使用 Python 的 `elasticsearch` 库测试 `elastic` 用户认证的示例: ```python from elasticsearch import Elasticsearch # 使用 elastic 用户和密码进行认证 es = Elasticsearch( "https://localhost:9200", basic_auth=("elastic", "your_password"), verify_certs=False ) # 测试连接 if es.ping(): print("Connected to Elasticsearch") else: print("Failed to connect to Elasticsearch") ``` 在运行此代码之前,请确保已正确安装 `elasticsearch` 库,并将 `your_password` 替换为 `elastic` 用户的实际密码。`verify_certs=False` 参数用于忽略 SSL 证书验证,仅用于测试环境。 ### 总结 解决 Elasticsearch 中 `authentication failed for user elastic realm reserved` 问题的关键在于检查用户凭证、安全功能配置、realm 设置以及 SSL/TLS 配置。通过重置密码、启用安全功能、检查 realm 配置以及分析日志,可以逐步排查并解决问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值