Откройте порт Redis для удаленных подключений

119

Я могу пинг-понг Redis на сервере:

# redis-cli ping
PONG

Но удаленно возникли проблемы:

$ src/redis-cli -h REMOTE.IP ping
Could not connect to Redis at REMOTE.IP:6379: Connection refused

В конфиге я получил стандартный порт:

# Accept connections on the specified port, default is 6379.
# If port 0 is specified Redis will not listen on a TCP socket.
port 6379

Может, мне стоит открыть порт 6379 на удаленной машине с Ubuntu? Как мне это сделать?

Максим Ефремов
источник
Redis не прослушивает удаленную машину?
Серджио Туленцев
может быть, как это проверить
Максим Ефремов
Вы отключили ufw?
insign 05

Ответы:

214

Вы установили опцию привязки, чтобы разрешить удаленный доступ на сервере Redis?

До (файл /etc/redis/redis.conf)

bind 127.0.0.1

После

bind 0.0.0.0

и запустите, sudo service redis-server restartчтобы перезапустить сервер. Если проблема не в этом, вы можете проверить все брандмауэры, которые могут блокировать доступ.

Важно: если вы не используете брандмауэр (iptables, ufw ..) для управления подключением к используемому порту, ЛЮБОЙ может подключиться к этому экземпляру Redis. Без использования RedisAUTH это означает, что любой может получить доступ / изменить / удалить ваши данные. Быть в безопасности!

Умеренно серьезный
источник
2
в файле конфигурации я добавил строку bind 0.0.0.0после строки bind 127.0.0.1. Перезапустил Redis. И теперь можно подключиться удаленно.
Максим Ефремов
Есть ли разница, если мы используем bind 0.0.0.0один противbind 127.0.0.1 0.0.0.0
Nyxynyx
1
@Nyxynyx 0.0.0.0 привязывается ко всем адаптерам, поэтому в этом нет необходимости. Однако это не должно иметь значения.
MildlySerious
1
Безопасно ли открывать Redis для любых IP-вызовов? Как мы можем ограничить доступ к Redis только с определенных IP-адресов?
brsbilgic
1
@MildlySerious большое спасибо. Мы потратили почти 2 недели на выяснение того, что такое брандмауэр, сеть или какая-то другая проблема. Но это изменение сработало как чемпион.
kinnu
23

Для меня мне нужно было сделать следующее:

1- Комментарий bind 127.0.0.1

2- Изменить protected-modeнаno

3- Защитите мой сервер с помощью iptables( https://www.digitalocean.com/community/tutorials/how-to-implement-a-basic-firewall-template-with-iptables-on-ubuntu-14-04 )

Абдо
источник
1
Пришлось использовать привязку 0.0.0.0. "bind 127.0.0.1" у меня не работал. Мне не нужно было устанавливать "защищенный режим" на "нет". Предупреждение: не оставляйте пустое место перед «привязкой», иначе сервер не запустится. Примечание: я использую порт Redis для Windows
Джош,
7

Замечу, что делать это без дополнительной защиты сервера Redis - не лучшая идея, поскольку это может оставить вас уязвимым для атаки. Не забудьте также реализовать AUTH или как-то защитить это. Подробнее см. Http://redis.io/topics/security .

назад
источник
3

1- Закомментировать привязку 127.0.0.1

2- установить requirepass yourpassword

затем проверьте, не заблокировал ли брандмауэр ваш порт

iptables -L -n

остановка службы iptables

Тони Ци
источник
3
  1. Откройте $ REDIS_HOME / redis.conf, раскомментируйте requirepass -YOUR-PASSWORD-HERE-и запишите свой пароль в указанные строки.

  2. Войдите в redis с помощью redis-cli и проверьте свой пароль в базе данных с помощью auth -YOUR-PASSWORD-HERE-команды.

  3. Отключите защищенный режим, изменив его строку в $ REDIS_HOME / redis.conf на protected-mode no.

  4. Найдите все значения портов привязки и прокомментируйте их все. Просто добавьте bind 0.0.0.0в файл $ REDIS_HOME / redis.conf.

  5. Отключите брандмауэр или откройте порт Redis.

  6. Начать redis с помощью ./redis-server $REDIS_HOME/redis.conf.

  7. Проверьте конфигурацию через ./redis-cli -h -YOUR-IP- -a -YOUR-PASSWORD-HERE-.

  8. Проверьте конфигурацию через ./redis-cli -h -YOUR-IP- ping.
Вахид Ф
источник
9
Пожалуйста, никогда не давайте совет «Отключите брандмауэр».
Саманта Аткинс
3
  1. Откройте файл в расположении /etc/redis.conf

  2. Закомментировать bind 127.0.0.1

  3. Перезагрузите Redis:

     sudo systemctl start redis.service
    
  4. Отключить Firewalld:

     systemctl disable firewalld
    
  5. Остановить Firewalld:

     systemctl stop firewalld
    

Тогда попробуйте:

redis-cli -h 192.168.0.2(ip) -a redis(username)
Ризван Башир
источник
1

Небольшое примечание: если вы используете экземпляр AWS ec2, есть еще один дополнительный шаг, который, я считаю, также является обязательным. Я пропустил шаг 3, и мне понадобился целый день, чтобы придумать, как добавить правило для входящего трафика в группу безопасности.

Шаг 1 (как и предыдущий): в вашем redis.conf измените привязку 127.0.0.1 на привязку 0.0.0.0

Шаг 2 (как и раньше): в вашем redis.conf измените защищенный режим да на защищенный режим нет

важно для инстанса Amazon Ec2:

Шаг 3: На вашем текущем компьютере ec2 перейдите в группу безопасности. добавьте правило для входящего трафика для настраиваемого TCP с портом 6379 и выберите вариант «использовать откуда угодно».

Нимиш Бансал
источник
1

В моем случае я использую redis-stable

Go to redis-stable path 
 cd /home/ubuntu/software/redis-stable

Откройте redis.conf

vim redis.conf

Изменение bind 127.0.0.1Tobind 0.0.0.0

изменить protected-mode yesTo protected-mode no

Перезагрузите redis-сервер:

/etc/init.d/redis-server stop
 redis-server redis.conf
Рамеш Поннусами
источник
0

Привязка и защищенный режим являются важными шагами. Но если ufw включен, вам нужно будет разрешить порт redis в ufw.

  1. Проверьте статус ufw,ufw status если Status: activeзатем разрешите redis-portufw allow 6379
  2. vi /etc/redis/redis.conf
  3. Изменение bind 127.0.0.1Tobind 0.0.0.0
  4. изменить protected-mode yesToprotected-mode no
Гаурав Тяги
источник