Redis CLI带密码连接出现安全警告的问题及解决方法
Redis CLI密码警告的原因与解决方案
警告原因
这条警告的本质是命令行明文传递Redis密码存在极高安全风险:
- 系统内任何拥有
ps命令权限的用户,都能通过查看进程列表直接获取到你的Redis密码; - 绝大多数Shell(比如Bash)会自动记录命令历史,带密码的
redis-cli命令会被明文保存在历史文件(如~/.bash_history)中,即使退出会话,密码仍可能被他人读取。
解决方案
1. 交互式输入密码(最安全推荐)
直接不带密码参数启动Redis CLI:
redis-cli
进入交互界面后,执行认证命令完成登录:
AUTH your_redis_password
这种方式密码不会出现在进程列表或命令历史中,安全性拉满。
2. 通过环境变量传递
设置REDISCLI_AUTH环境变量,Redis CLI会自动读取该变量的值作为认证密码:
# 临时设置(仅当前会话有效) export REDISCLI_AUTH=your_redis_password redis-cli
如果只是单次使用,也可以合并成一行命令:
REDISCLI_AUTH=your_redis_password redis-cli
这种方式密码不会暴露在进程列表中,也不会被Shell history明文记录。
3. 使用专用配置文件
创建一个Redis CLI的配置文件(比如~/.redis_cli.conf),写入密码配置:
requirepass your_redis_password
启动CLI时指定该配置文件:
redis-cli --config ~/.redis_cli.conf
最后记得限制配置文件的访问权限,避免其他用户读取:
chmod 600 ~/.redis_cli.conf
4. 临时规避Shell历史(仅应急用)
如果一定要在命令行直接带密码,可在命令前加一个空格(前提是你的Shell的HISTCONTROL参数设置为ignorespace或ignoreboth),这样这条命令不会被写入Shell历史:
redis-cli -a your_redis_password
⚠️ 注意:这种方式只能避免密码进入历史记录,进程列表中依然能看到密码,所以仅适合应急场景。
内容的提问来源于stack exchange,提问作者Bhagyesh_Devops
相关产品推荐
相关产品推荐

