Как отключить "защищенный режим" в Redis?
Я хотел бы отключить protected-mode
на моем производстве редис. Что касается следующей ошибки, которую я получил от другого экземпляра Redis-Sentinel, я мог отключить его в режиме реального времени, подключившись к Redis с главной машины, на которой он работает.
DENIED Redis работает в защищенном режиме, потому что защищенный режим включен, адрес привязки не указан, клиенту не запрашивается пароль аутентификации. В этом режиме соединения принимаются только из интерфейса обратной связи. Если вы хотите подключиться к Redis с внешних компьютеров, вы можете воспользоваться одним из следующих решений:
1) Просто отключите защищенный режим, отправив команду "CONFIG SET protected-mode no" из интерфейса обратной связи, подключившись к Redis с того же хоста, на котором запущен сервер, однако УБЕДИТЕСЬ, что Redis недоступен для общего доступа из Интернета, если вы это сделаете. Используйте CONFIG REWRITE, чтобы сделать это изменение постоянным.
2) В качестве альтернативы вы можете просто отключить защищенный режим, отредактировав файл конфигурации Redis, установив для параметра защищенного режима значение "нет", а затем перезапустив сервер.
3) Если вы запустили сервер вручную только для тестирования, перезапустите его с параметром --protected-mode no.
4) Настройте адрес привязки или пароль аутентификации.
ПРИМЕЧАНИЕ. Для того чтобы сервер начал принимать подключения извне, вам нужно сделать только одно из перечисленных выше действий.
Но когда я подключаюсь и пытаюсь отключить его, я получаю сообщение об ошибке (error) ERR Unsupported CONFIG parameter: protected-mode
,
Нет настроенной аутентификации или чего-либо еще - вся безопасность управляется правилами брандмауэра. redis.conf
почти по умолчанию.
демонстрация
root@svim-redis03 /etc/redis # redis-cli
127.0.0.1:6379> CONFIG GET protected*
(empty list or set)
127.0.0.1:6379> CONFIG GET bind*
1) "bind"
2) "127.0.0.1"
127.0.0.1:6379> CONFIG SET protected-mode no
(error) ERR Unsupported CONFIG parameter: protected-mode
127.0.0.1:6379> exit
root@svim-redis03 /etc/redis # redis-server --version
Redis server v=3.2.9 sha=00000000:0 malloc=jemalloc-4.0.3 bits=64 build=86450d2ba8219c1e
Есть ли что-то, что мне нужно проверить или изменить раньше? Я не смог найти никаких подсказок в документации или в проблемах GitHub.
Обновление 01
Невозможно даже изменить адрес привязки или любой другой параметр конфигурации. Нужно ли мне сначала включить изменения конфигурации?
127.0.0.1:6379> config set bind "127.0.0.1 11.12.13.14"
(error) ERR Unsupported CONFIG parameter: bind
1 ответ
Оказывается, что текущий запущенный сервер не совпадает с версией, которую я установил.
Как воспроизвести это?
Просто подключитесь через redis-cli
на ваш экземпляр Redis и введите INFO server
который возвращает кучу информации.
127.0.0.1:6379> INFO server
# Server
redis_version:3.0.7
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:869e89100d5ea8c2
redis_mode:standalone
os:Linux 4.2.0-35-generic x86_64
arch_bits:64
multiplexing_api:epoll
gcc_version:4.8.4
process_id:26720
run_id:6645270dd2ac6a7f96caa054f9dbba9e66566755
tcp_port:6379
uptime_in_seconds:10971777
uptime_in_days:126
hz:10
lru_clock:6676576
config_file:/etc/redis/redis.conf
Как вы можете видеть, этот экземпляр Redis работает почти 127 дней и использует redis_version:3.0.7
,
Как это исправить?
Перезагрузите сервер и убедитесь, что вы действительно его перезапустили! Например, в большинстве дистрибутивов Linux вы можете сделать это, нажав следующие команды.
root@svim-redis03 ~ # service redis-server stop
Stopping redis-server: redis-server.
Проверьте, действительно ли он не в сети, попытавшись соединиться с redis-cli
, Если вы все еще можете подключиться, экземпляр все еще работает. Проверьте это путем поиска активных процессов redis.
root@svim-redis03 ~ # ps -efl |grep redis
1 S redis 12418 1 0 80 0 - 10673 ep_pol 2016 ? 05:33:17 /usr/bin/redis-server 127.0.0.1:6381
1 S redis 12442 1 0 80 0 - 11697 ep_pol 2016 ? 05:33:46 /usr/bin/redis-server 127.0.0.1:6382
1 S redis 12453 1 0 80 0 - 10673 ep_pol 2016 ? 05:40:17 /usr/bin/redis-server 127.0.0.1:6383
4 S root 16570 16386 0 80 0 - 2489 wait_w 10:42 pts/7 00:00:00 tail -f /var/log/redis/redis-server-6379.log
0 S root 17064 12637 0 80 0 - 3617 pipe_w 10:47 pts/1 00:00:00 grep --color=auto redis
1 S redis 26720 1 0 80 0 - 453041 ep_pol Mar07 ? 08:37:01 /usr/bin/redis-server 127.0.0.1:6379
Как вы можете видеть, экземпляр все еще работает (идентификатор процесса: 26720). Выйдите из него с помощью следующей команды.
kill 26720
После того, как вы убили процесс, проверьте еще раз с ps -efl |grep redis
если экземпляр действительно не работает
Наконец, начните снова с
root@svim-redis03 ~ # service redis-server start
Starting redis-server: redis-server.
Теперь проверьте, работает ли экземпляр с правильной версией.
root@svim-redis03 ~ # redis-cli
127.0.0.1:6379> INFO server
# Server
redis_version:3.2.9
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:86450d2ba8219c1e
redis_mode:standalone
os:Linux 4.2.0-35-generic x86_64
arch_bits:64
multiplexing_api:epoll
gcc_version:4.8.4
process_id:17135
run_id:40d6fa2e2b25e8f5b97a3c97ec1bddb8edda0014
tcp_port:6379
uptime_in_seconds:11
uptime_in_days:0
hz:10
lru_clock:6677102
executable:/usr/bin/redis-server
config_file:/etc/redis/redis.conf