Py学习  »  Redis

如何在不存储密码的情况下登录redis cli?

potato • 4 年前 • 632 次点击  

我已将Redis服务器配置为使用密码 requirepass 选项。

运行时 redis-cli 我有两个访问数据库的选项。

  1. 使用 redis-cli -a mypassword 命令。这是存贮历史中的Passswear。 每次运行它时,我都需要删除历史记录条目。
  2. 使用 AUTH mypassword 在redis cli中。不幸的是,此选项将您的密码保存在redis cli中,即使您在没有任何身份验证的情况下登录到redis cli,也可以通过按向上箭头查看密码。在没有任何保护的情况下,它确实是可以接近的。

验证redis cli的正确方法是什么?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/39096
 
632 次点击  
文章 [ 3 ]  |  最新文章 4 年前
tcjulian
Reply   •   1 楼
tcjulian    5 年前

将redis历史重定向到 /dev/null 不会存储auth命令,也会失去redis历史的好处。我不知道是否有办法选择性地忽略redis命令 AUTH mypassword 但是有一种方法可以让bash有选择地在bash历史中存储命令。

正在验证 redis-cli -a mypassword 通常将命令存储在bash history中,但是bash history有一个特性可以阻止它存储您选择的特定命令:如果 HISTCONTROL 环境变量具有值 ignorespace , ignoreboth ignorespace:ignoredups ,bash history不会存储任何以空格开头的命令。(见 https://www.linuxjournal.com/content/using-bash-history-more-efficiently-histcontrol )

$echo ${HISTCONTROL} # examine the value of HISTCONTROL
ignoreboth

记住这一点,您可以在使用时隐藏密码 redis-cli -a :

a) 执行一次性身份验证,不要在bash历史记录中存储对redis cli的调用:

$ redis-cli -a mypassword #note the leading space

B) 使用环境变量在bash会话期间保持身份验证,但在历史记录中保留对redis cli的调用:

$ MYPASS=mypassword #note the leading space; won't be stored
$redis-cli -a ${MYPASS} #no leading space, but doesn't leak the password

您可以确认这与 history 命令:

$history #examine bash history
$history -d 345 #delete line 345 from your history if you made a mistake and want to erase that line
DDukDDak99
Reply   •   2 楼
DDukDDak99    5 年前

您可以在redis cli上键入。

redis-cli -h 1.1.1.1
1.1.1.1:6379> auth mypassword
OK

或者可以使用shell脚本。

#!/bin/bash
echo -n Password: 
read -s password
redis-cli -h 1.1.1.1 -a $
for_stack
Reply   •   3 楼
for_stack    5 年前

好问题!我也被这个问题搞糊涂了…

默认情况下,历史记录保存在以下文件中: $HOME/.rediscli_history . 但是,可以通过将历史路径设置为环境变量来更改历史文件的位置: REDISCLI_HISTFILE . 尤其是,如果你设置 重新设置历史文件 作为 /dev/空 , redis-cli 不会保存任何历史记录。

export REDISCLI_HISTFILE=/dev/null