具有 Sudo 权限的 Elasticsearch Curl 命令可以工作,但没有 Sudo 或使用简单的 Curl 命令会返回空响应

问题描述 投票:0回答:1

我是 Elasticsearch 的新手,目前正在本地 WSL2 Ubuntu 计算机上使用它。我正在遵循官方 Debian 安装指南,一切似乎都运行良好,但我在测试 Elasticsearch 响应时遇到了问题。

事情是这样的:

  • 当我使用以下带有 sudo 权限的curl 命令时,我得到了有效的响应,并且可以确认 Elasticsearch 正在运行:
sudo curl --cacert /etc/elasticsearch/certs/http_ca.crt -u elastic:$ELASTIC_PASSWORD https://localhost:9200
  • 但是,当我尝试像这样的更简单的命令(没有 sudo)时,我得到一个空响应:
curl -X GET localhost:9200

即使 Elasticsearch 正在运行并且我可以在状态检查中看到它,也会发生这种情况。

我已经检查了该服务是否处于活动状态,并且我还确保在使用第一个curl命令进行测试时

ELASTIC_PASSWORD
是正确的。

为什么会发生这种情况,如何修复它,以便我可以运行简单的curl命令而不需要

sudo

任何帮助将不胜感激!预先感谢。

http elasticsearch curl permissions windows-subsystem-for-linux
1个回答
0
投票

我猜您正在使用

sudo
,因为非特权用户无权访问
/etc/elasticsearch/certs/http_ca.crt
中的证书。

无论哪种方式,我都不知道为什么你在运行

-u elastic:$ELASTIC_PASSWORD
而没有
curl
时要删除
sudo

使用curl进行调试时要记住的一点是添加

-i
参数以查看从请求返回的HTTP代码。我怀疑您收到了与授权相关的
4xx
代码(可能是
401
403
),因为您发送的请求没有用户名/密码。

为了避免使用

sudo
访问
/etc/elasticsearch/certs/http_ca.crt
(如果这是您使用
sudo
的原因),您可以添加
-k
参数来跳过 TLS 证书验证。

例如:

curl -k -u elastic:$ELASTIC_PASSWORD https://localhost:9200

请记住,在生产中绝对不建议这样做,但由于您正在访问提供自签名证书的本地主机端点,所以应该没问题。

© www.soinside.com 2019 - 2024. All rights reserved.