elasticsearch通過x-pack模塊來提供密碼認證等功能,不過我們無需額外安裝x-pack插件,x-pack包在6.3版本后已經集成在es安裝包內
步驟挺簡單。大概的步驟如下
1.替換掉原本的Elasticsearch的modules里面的x-pack-core-6.4.2.jar申請許可證。
2.上傳安裝許可證
3.完事
那開始(我用的docker安裝的es和kibana) 進入docker-es進入x-pack-core的目錄,替換掉這個東西。接下來展示如何替換。如果嫌棄麻煩的 可以結尾自取class文件或者jar包直接替換。
docker exec -it es6.4.2 /bin/bash cd modules/x-pack-core/



yum update && yum install lrzsz sz x-pack-core-6.4.2.jar

替換成下面的代碼
LicenseVerifier.java
package org.elasticsearch.license; import java.nio.*; import org.elasticsearch.common.bytes.*; import java.util.*; import java.security.*; import org.elasticsearch.common.xcontent.*; import org.apache.lucene.util.*; import org.elasticsearch.core.internal.io.*; import java.io.*; public class LicenseVerifier { public static boolean verifyLicense(final License license, final byte[] encryptedPublicKeyData) { return true; } public static boolean verifyLicense(final License license) { return true; } }
package org.elasticsearch.xpack.core; import org.elasticsearch.common.io.*; import java.net.*; import org.elasticsearch.common.*; import java.nio.file.*; import java.io.*; import java.util.jar.*; public class XPackBuild { public static final XPackBuild CURRENT; private String shortHash; private String date; @SuppressForbidden(reason = "looks up path of xpack.jar directly") static Path getElasticsearchCodebase() { final URL url = XPackBuild.class.getProtectionDomain().getCodeSource().getLocation(); try { return PathUtils.get(url.toURI()); } catch (URISyntaxException bogus) { throw new RuntimeException(bogus); } } XPackBuild(final String shortHash, final String date) { this.shortHash = shortHash; this.date = date; } public String shortHash() { return this.shortHash; } public String date() { return this.date; } static { final Path path = getElasticsearchCodebase(); String shortHash = null; String date = null; Label_0157: { shortHash = "Unknown"; date = "Unknown"; } CURRENT = new XPackBuild(shortHash, date); } }
改完之后就需要吧java編譯成class文件

然后把剛才的依賴加上。重新吧java編譯成class文件
javac -cp elasticsearch-6.4.2.jar;lucene-core-7.4.0.jar;x-pack-core-6.4.2.jar;elasticsearch-core-6.4.2.jar LicenseVerifier.java javac -cp elasticsearch-6.4.2.jar;lucene-core-7.4.0.jar;x-pack-core-6.4.2.jar;elasticsearch-core-6.4.2.jar LicenseVerifier.java
然后把兩個class文件替換掉剛才的那兩個,覆蓋掉之前未修改的文件,然后在重新打成jar包
jar -cvf x-pack-core-6.4.2.jar
然后進入es 。rz上傳剛才新做的jar 替換掉剛才的那個jar包,然后重啟es
docker exec -it es6.4.2 /bin/bash cd modules/x-pack-core/ mv x-pack-core-6.4.2.jar x-pack-core-6.4.2.jar.back rz rm x-pack-core-6.4.2.jar.back exit docker restart es6.4.2
jar包替換好了之后。就需要去申請lincese,申請地址:https://license.elastic.co/registration,打開之后這樣。自己申請一下
之后會發送郵件,收到郵件里面有個下載鏈接。吧json下載下來。
修改json內的東西。修改license的版本和期限,type改為platinum白金版,expiry_date_in_millis期限設為2855980923000
修改好了之后 json也准備好了。現在准備上傳,上傳有好幾種方式。我這里就直接用kibana上傳就行了方便。


打開es 開啟密碼
docker exec -it es6.4.2 /bin/bash cd config vi elasticsearch.yml
編輯yml
cluster.name: "docker-cluster" #外網訪問 network.host: 0.0.0.0 #開啟xpack認證 xpack.security.enabled: true # minimum_master_nodes need to be explicitly set when bound on a public IP # set to 1 to allow single node clusters # Details: https://github.com/elastic/elasticsearch/pull/17288 discovery.zen.minimum_master_nodes: 1 #跨域 http.cors.enabled: true http.cors.allow-origin: "*"
然后 退出 重啟。重啟之后進入bin,修改密碼
elasticsearch-setup-passwords interactive

現在就來修改一下kibana的配置,es設置了密碼 kibana就訪問不進去了
docker exec -it kinaba6.4.2 /bin/bash cd config/ vi kibana.yml
將下面的參數添加進去(密碼和用戶名需要加引號,否則不然可能docker啟動不了kibana)
elasticsearch.username: 'elastic' elasticsearch.password: '123456'
【其他】如果啟動不了kibana,就需要單獨容器內的配置文件復制出來 在替換進去修改,這里以kibana舉例
docker cp kinaba6.4.2:/opt/kibana/config/kibana.yml . vi kibana.yml docker cp kibana.yml kinaba6.4.2:/opt/kibana/config/kibana.yml docker restart kinaba6.4.2
解釋:吧kibana的配置文件復制到當前目錄下 修改好了之后 替換回去 在重啟容器

上傳剛才改過的json
ok完成。

ok!到這里就完成了
