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
- After setting up the password, you need to restart Elasticsearch. By now, Elasticsearch should be running on port 9200.
-
Now go to your browser, and hit
http://localhost:9200
. - 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.
-
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://youtube.com/watch?v=lY4-C0ZZyeY%3Fautoplay%3D1
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: