如何修改Elasticsearch密码
Elasticsearch 密码同时也是节点与主控之间通讯的密码。如果密码泄露,务必按以下两步修改:先改主控,再改节点。密码只允许字母和数字。
1. 修改主控上的 ES 密码
登录主控服务器,用 root 执行。把 NEW_ES_PWD 换成新密码:
bash -s <<'CDNFLY_ES_PWD'
new_pwd="NEW_ES_PWD"
set -euo pipefail
conf="/opt/cdnfly-go/conf/config.yaml"
old_pwd="$(sed -n '/^log:/,/^[^[:space:]]/ s/^[[:space:]]*password:[[:space:]]*//p' "$conf" | head -1 | tr -d '\"')"
test -n "$old_pwd"
cp -a "$conf" "$conf.$(date +%Y%m%d%H%M%S).bak"
curl -fsS -u "elastic:$old_pwd" -X POST "http://127.0.0.1:9200/_security/user/elastic/_password" \
-H "Content-Type: application/json" -d "{\"password\": \"$new_pwd\"}"
sed -i "/^log:/,/^[^[:space:]]/ s|^\([[:space:]]*\)password:.*|\1password: $new_pwd|" "$conf"
systemctl restart master-api.service master-task.service
systemctl is-active master-api.service master-task.service
CDNFLY_ES_PWD
命令会自动从 /opt/cdnfly-go/conf/config.yaml 读取旧密码,修改 ES 中 elastic 用户的密码,更新主控配置并重启主控服务。
2. 修改节点上的 ES 密码
方式一:后台批量下发(推荐)
登录主控后台,进入"系统管理"→"维护升级"→"维护操作"选项卡,在"节点设置"中勾选"节点配置的ES密码",输入相同的新密码,输入当前管理员密码后创建设置任务,全部节点执行成功即完成。
方式二:登录节点手动修改
在每台 V6 节点上用 root 执行。把 NEW_ES_PWD 换成同一个新密码:
bash -s <<'CDNFLY_NODE_ES_PWD'
new_pwd="NEW_ES_PWD"
set -euo pipefail
conf="/opt/cdnfly-go/agent/conf/config.yaml"
filebeat="/opt/cdnfly-go/agent/conf/filebeat.yml"
ts="$(date +%Y%m%d%H%M%S)"
cp -a "$conf" "$conf.$ts.bak"
cp -a "$filebeat" "$filebeat.$ts.bak"
sed -i "/^log:/,/^[^[:space:]]/ s|^\([[:space:]]*\)password:.*|\1password: $new_pwd|" "$conf"
sed -i "s|^ password:.*| password: \"$new_pwd\"|" "$filebeat"
systemctl restart filebeat.service agent-socket.service agent-task.service
systemctl is-active filebeat.service agent-socket.service agent-task.service
CDNFLY_NODE_ES_PWD
检查结果
# 主控上验证新密码能访问 ES
curl -u elastic:NEW_ES_PWD http://127.0.0.1:9200
返回集群信息 JSON 即修改成功;再确认主控后台中节点在线、访问日志和监控数据正常更新。