docker es安装
https://devpress.csdn.net/cloudnative/66d584f92045de334a5695ec.html
以下是配置密码验证
# Elasticsearch 安全配置指南
## 1. 环境信息
- Elasticsearch 版本: 8.2.0
- 部署方式: Docker 容器
- 容器名称: es
## 2. 问题诊断
初始问题是无法通过 HTTP 访问 Elasticsearch,出现 "Empty reply from server" 错误。原因是:
1. Elasticsearch 8.x 默认启用安全功能
2. 需要使用 HTTPS 而不是 HTTP 访问
3. 需要正确的用户认证
## 3. 配置步骤
### 3.1 重置 elastic 用户密码
```bash
# 进入容器
docker exec -it es bash
# 重置密码
./elasticsearch-reset-password -u elastic
# 记录生成的密码(示例)
# Password for the [elastic] user successfully reset.
# New value: au3l*TskOwUJvOmw_vnQ
```
### 3.2 检查证书配置
```bash
# 检查证书权限
ls -l /usr/share/elasticsearch/config/certs/http.p12
# 应显示类似:-rw-rw---- 1 root root 9997 Apr 18 00:51 /usr/share/elasticsearch/config/certs/http.p12
# 检查用户权限
id elasticsearch
# 确认用户属于正确的组:uid=1000(elasticsearch) gid=1000(elasticsearch) groups=1000(elasticsearch),0(root)
```
### 3.3 验证 Elasticsearch 访问
```bash
# 使用 HTTPS 和 -k 参数(忽略证书验证)
curl -X GET "https://localhost:9200" -u elastic:au3l*TskOwUJvOmw_vnQ -k
```
成功响应示例:
```json
{
"name" : "a9191d4258ba",
"cluster_name" : "docker-cluster",
"cluster_uuid" : "7nMKAmKpQrmO7fR11mWGMw",
"version" : {
"number" : "8.2.0",
"build_flavor" : "default",
"build_type" : "docker",
...
},
"tagline" : "You Know, for Search"
}
```
### 3.4 创建管理员用户
```bash
# 创建 admin 用户
curl -X POST "https://localhost:9200/_security/user/admin" \
-H "Content-Type: application/json" \
-u elastic:au3l*TskOwUJvOmw_vnQ \
-k \
-d '{
"username": "admin",
"password": "Admin@123",
"roles": ["superuser"]
}'
```
## 4. 重要配置说明
### 4.1 SSL/TLS 配置
确保 elasticsearch.yml 包含以下配置:
```yaml
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.keystore.path: certs/http.p12
xpack.security.transport.ssl.truststore.path: certs/http.p12
xpack.security.http.ssl.enabled: true
xpack.security.http.ssl.keystore.path: certs/http.p12
```
### 4.2 可用账户信息
1. elastic 用户(内置超级用户)
- 用户名: elastic
- 密码: [通过重置命令生成]
- 角色: superuser
2. admin 用户(新建管理员)
- 用户名: admin
- 密码: Admin@123
- 角色: superuser
## 5. 注意事项
1. 始终使用 HTTPS 协议访问
2. 使用自签名证书时需要添加 -k 参数
3. 保管好生成的密码
4. 外部访问时使用服务器 IP 或域名替换 localhost
## 6. 常用命令
```bash
# 验证用户访问
curl -X GET "https://localhost:9200" -u admin:Admin@123 -k
# 查看用户信息
curl -X GET "https://localhost:9200/_security/user/admin" \
-u admin:Admin@123 \
-k
```
浙公网安备 33010602011771号