Bitnami Helm部署Cassandra:无法通过cqlsh远程连接
解决Bitnami Helm Chart部署的Cassandra集群SSL连接报错问题
问题场景
通过Bitnami Helm Chart搭建的远程Cassandra集群,使用自签名证书,执行cqlsh连接命令时出现文件找不到的错误。
已配置的cqlshrc文件[ssl]段内容:
[ssl] ; certfile = ~/keys/cassandra.cert ; Optional - true by default validate = flase ; To be provided when require_client_auth=true userkey = ~/key.pem ; To be provided when require_client_auth=true usercert = ~/cert.pem
执行的连接命令:
cqlsh --ssl -u cassandra -p 123@123 10.11.xxxx.230 9042
报错信息:
Connection error: ('无法连接到任何服务器', {'10.11.xxxx.230:9042': IOError(2, '没有该文件或目录')})
排查与解决步骤
修正配置拼写错误
cqlshrc里的validate = flase是拼写错误,必须改为validate = false,否则SSL验证逻辑会异常。检查证书/密钥文件路径
- 确认
~/key.pem和~/cert.pem文件真实存在,部分环境下cqlsh无法正确解析波浪号~,建议替换为绝对路径(例如/home/your-user/key.pem)。 - 执行
ls -l ~/key.pem ~/cert.pem验证文件是否存在,若不存在需重新生成或复制正确的证书文件。
- 确认
调整文件权限
Cassandra要求密钥文件权限不能过宽,执行以下命令设置合适权限:chmod 600 ~/key.pem ~/cert.pem确保运行cqlsh的用户拥有这两个文件的读取权限。
匹配集群端SSL配置
- 如果Cassandra集群未开启客户端认证(
require_client_auth=false),可注释掉userkey和usercert配置项,仅保留validate=false即可。 - 如果集群开启了客户端认证,需确保
userkey和usercert对应的是集群信任的客户端证书/密钥对。
- 如果Cassandra集群未开启客户端认证(
启用调试日志定位问题
执行带调试参数的连接命令,查看更详细的错误细节:cqlsh --ssl --debug -u cassandra -p 123@123 10.11.xxxx.230 9042日志会明确指出找不到的具体文件,帮助精准排查。
内容的提问来源于stack exchange,提问作者Narayana Swamy
相关产品推荐
相关产品推荐

