Abra el puerto Redis para conexiones remotas

118

Puedo hacer ping pong Redis en el servidor:

# redis-cli ping
PONG

Pero de forma remota, tengo problemas:

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

En la configuración, obtuve el puerto estándar:

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

Entonces, ¿quizás debería abrir el puerto 6379 en la máquina remota de Ubuntu? ¿Cómo lo hago?

Maxim Yefremov
fuente
redis no está escuchando en la máquina remota?
Sergio Tulentsev
tal vez, cómo verificarlo
Maxim Yefremov
¿Ha desactivado ufw?
insign

Respuestas:

214

¿Estableció la opción de vinculación para permitir el acceso remoto en el servidor de redis?

Antes (archivo /etc/redis/redis.conf)

bind 127.0.0.1

Después

bind 0.0.0.0

y ejecutar sudo service redis-server restartpara reiniciar el servidor. Si ese no es el problema, es posible que desee verificar cualquier firewall que pueda bloquear el acceso.

Importante: Si no usa un firewall (iptables, ufw ..) para controlar quién se conecta al puerto en uso, CUALQUIERA puede conectarse a esta instancia de Redis. Sin usar Redis,AUTH eso significa que cualquiera puede acceder / cambiar / eliminar sus datos. ¡Cuidate!

Levemente serio
fuente
2
en el archivo de configuración agregué cadena bind 0.0.0.0tras cadena bind 127.0.0.1. Redis reiniciado. Y ahora puede conectarse de forma remota.
Maxim Yefremov
¿Hay alguna diferencia si usamos bind 0.0.0.0solo vsbind 127.0.0.1 0.0.0.0
Nyxynyx
1
@Nyxynyx 0.0.0.0 se une a todos los adaptadores, por lo que no es necesario. Sin embargo, no debería marcar la diferencia.
MildlySerious
1
¿Es seguro abrir redis a cualquier llamada IP? ¿Cómo podemos restringir el acceso a redis solo desde ciertas IP?
brsbilgic
1
@MildlySerious muchas gracias. Hemos perdido casi 2 semanas averiguando si el firewall o la red o algún otro problema. Pero este cambio funcionó como campeón.
kinnu
23

Para mí, necesitaba hacer lo siguiente:

1- Comentar bind 127.0.0.1

2- Cambiar protected-modeano

3- Proteger mi servidor con iptables( https://www.digitalocean.com/community/tutorials/how-to-implement-a-basic-firewall-template-with-iptables-on-ubuntu-14-04 )

Abdo
fuente
1
Tuve que usar bind 0.0.0.0. "bind 127.0.0.1" no funcionó para mí. No necesitaba establecer "modo protegido" en "no". Advertencia: No deje un espacio vacío antes del "enlace" o el servidor no se iniciará. Nota: estoy usando el puerto de Windows de Redis
Josh
7

Una nota rápida de que hacer esto sin proteger aún más su servidor Redis no es una buena idea, ya que puede dejarlo expuesto a ataques. Asegúrese de implementar también AUTH o asegurar eso. Consulte http://redis.io/topics/security para obtener más detalles.

al revés
fuente
3

1- Comentar el enlace 127.0.0.1

2- establecer requirepass yourpassword

luego verifique si el firewall bloqueó su puerto

iptables -L -n

parada de iptables de servicio

tony qi
fuente
3
  1. Abra $ REDIS_HOME / redis.conf y descomente requirepass -YOUR-PASSWORD-HERE-y escriba su contraseña en las líneas especificadas.

  2. Inicie sesión en redis usando redis-cli y verifique su contraseña en la base de datos usando el auth -YOUR-PASSWORD-HERE-comando.

  3. Deshabilite el modo protegido cambiando su cadena en $ REDIS_HOME / redis.conf a protected-mode no.

  4. Busque todos los valores de los puertos de enlace y comente todos ellos. Simplemente agregue bind 0.0.0.0al archivo $ REDIS_HOME / redis.conf.

  5. Deshabilite su firewall o abra el puerto redis.

  6. Comience a usar redis ./redis-server $REDIS_HOME/redis.conf.

  7. Verifique la configuración a través de ./redis-cli -h -YOUR-IP- -a -YOUR-PASSWORD-HERE-.

  8. Verifique la configuración a través de ./redis-cli -h -YOUR-IP- ping.
Vahid F
fuente
9
Por favor, nunca dé el consejo "Desactive su firewall".
Samantha Atkins
3
  1. Abra el archivo en la ubicación /etc/redis.conf

  2. Comentar bind 127.0.0.1

  3. Reinicie Redis:

     sudo systemctl start redis.service
    
  4. Desactivar Firewalld:

     systemctl disable firewalld
    
  5. Detener Firewalld:

     systemctl stop firewalld
    

Entonces intenta:

redis-cli -h 192.168.0.2(ip) -a redis(username)
Rizwan Basheer
fuente
1

Una nota rápida de que si está utilizando una instancia de AWS ec2, hay un paso adicional que creo que también es obligatorio. Me perdí el paso 3 y me tomó todo el día descubrir cómo agregar una regla de entrada al grupo de seguridad

Paso 1 (como el anterior): en su redis.conf cambie el enlace 127.0.0.1 para enlazar 0.0.0.0

Paso 2 (como el anterior): en su redis.conf cambie el modo protegido sí al modo protegido no

importante para la instancia Amazon Ec2:

Paso 3: En su máquina ec2 actual, vaya al grupo de seguridad. agregue una regla de entrada para TCP personalizado con el puerto 6379 y seleccione la opción "usar desde cualquier lugar".

Nimish Bansal
fuente
1

En mi caso, estoy usando redis-stable

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

Abra el redis.conf

vim redis.conf

Cambiar el bind 127.0.0.1abind 0.0.0.0

cambiar el protected-mode yesa protected-mode no

Reinicie el servidor redis:

/etc/init.d/redis-server stop
 redis-server redis.conf
Ramesh Ponnusamy
fuente
0

Enlazar y en modo protegido ambos son los pasos esenciales. Pero si ufw está habilitado, tendrá que hacer que el puerto redis lo permita en ufw.

  1. Verifique el estado de ufwufw status si Status: activeluego permite redis-portufw allow 6379
  2. vi /etc/redis/redis.conf
  3. Cambiar el bind 127.0.0.1abind 0.0.0.0
  4. cambiar el protected-mode yesaprotected-mode no
Gaurav Tyagi
fuente