今天很奇怪,两台服务器上的redis毫无征兆的集体报错 NOAUTH Authentication required,一开始也没有重视,重启了下就行了,深更半夜老板说又不能访问了,才开始重视。搜下了不少人都遇到了这种状况包括红薯大哥,并且状况有点小严重。html
不管是否开启了远程访问(毕竟阿里服务器份额占多,区域也就这么几个,花个几块钱临时用个几小时作内网扫描了),都看下是否开启了密码访问。redis
用redis-cli客户端链接远程服务器docker
./redis-cli -h 10.129.xx.xx:6379 10.129.xx.x:6379> keys * (error) ERR operation not permitted
或者服务器
10.129.xx.x:6379> config get requirepass
若是没有输入秘密就能够访问,那么说明你在裸奔,话很少说,先设置登陆秘密再说运维
首先肯定redis使用了那个redis.conf,而后修改requirepass(若是redis加入了service,在/etc/init.d里面查看redis启动命令)ide
我检查了两天服务,因为测试服是临时搭建,确定是裸奔的,可是没想的是生成服居然也是裸奔,让我很惊讶,毕竟原来是这些是有专门的运维来管理的。测试
在检查问题的过程当中裸奔的测试服被设置了密码访问,那么能够百分百确定测试服是被黑了ui
这种黑,比较简单,毕竟他没有拿到服务器的其余权限,仅仅是经过redis-cli设置了临时的登陆密码而已,重启以后,该设置就会失效(不是很肯定,因此下面用docker redis来验证确认了).net
启动redis实例code
root@aaa6982a00bb:/data# redis-cli 127.0.0.1:6379> keys * 1) "sysuser:1" 2) "sysuser:32" 127.0.0.1:6379> config get requirepass 1) "requirepass" 2) "" 127.0.0.1:6379> config set requirepass 123456 OK 127.0.0.1:6379> config get requirepass (error) NOAUTH Authentication required. 127.0.0.1:6379> auth 123456 OK 127.0.0.1:6379> keys * 1) "sysuser:1" 2) "sysuser:32"
关闭redis实例,从新启动,不须要输入密码也可访问了
root@aaa6982a00bb:/data# redis-cli 127.0.0.1:6379> keys * 1) "sysuser:1" 2) "sysuser:32" 127.0.0.1:6379>