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
```
posted @ 2025-03-30 23:56  Fyy发大财  阅读(19)  评论(0)    收藏  举报