今天很奇怪,兩臺服務器上的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>