Ouvrez le port Redis pour les connexions à distance

118

Je peux ping pong Redis sur le serveur:

# redis-cli ping
PONG

Mais à distance, j'ai des problèmes:

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

En config, j'ai le port standard:

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

Alors peut-être que je devrais ouvrir le port 6379 sur la machine Ubuntu distante? Comment fait-on ça?

Maxim Yefremov
la source
redis n'écoute pas sur la machine distante?
Sergio Tulentsev
peut-être, comment le vérifier
Maxim Yefremov
Avez-vous désactivé ufw?
insigne le

Réponses:

214

Avez-vous défini l'option de liaison pour autoriser l'accès à distance sur le serveur Redis?

Avant (fichier /etc/redis/redis.conf)

bind 127.0.0.1

Après

bind 0.0.0.0

et courir sudo service redis-server restart pour redémarrer le serveur. Si ce n'est pas le problème, vous voudrez peut-être vérifier les pare-feu susceptibles de bloquer l'accès.

Important: si vous n'utilisez pas de pare-feu (iptables, ufw ..) pour contrôler qui se connecte au port utilisé, TOUT LE MONDE peut se connecter à cette instance Redis. Sans utiliser Redis,AUTH cela signifie que tout le monde peut accéder / modifier / supprimer vos données. Fais attention!

Légèrement grave
la source
2
dans le fichier de configuration, j'ai ajouté une chaîne bind 0.0.0.0après une chaîne bind 127.0.0.1. Redis redémarré. Et maintenant peut se connecter à distance.
Maxim Yefremov
Y a-t-il une différence si nous utilisons bind 0.0.0.0seul vsbind 127.0.0.1 0.0.0.0
Nyxynyx
1
@Nyxynyx 0.0.0.0 se lie à tous les adaptateurs, donc ce n'est pas nécessaire. Cela ne devrait pas faire de différence, cependant.
MildlySerious
1
Est-il sûr d'ouvrir Redis à des appels IP? Comment pouvons-nous restreindre l'accès aux redis uniquement à partir de certaines IP?
brsbilgic
1
@MildlySerious merci beaucoup. Nous avons perdu près de 2 semaines à déterminer si le pare-feu, le réseau ou un autre problème. Mais ce changement a fonctionné comme un champion.
kinnu
23

Pour moi, j'avais besoin de faire ce qui suit:

1- Commentez bind 127.0.0.1

2- Changer protected-modepourno

3- Protégez mon serveur avec iptables( https://www.digitalocean.com/community/tutorials/how-to-implement-a-basic-firewall-template-with-iptables-on-ubuntu-14-04 )

Abdo
la source
1
J'ai dû utiliser bind 0.0.0.0. "bind 127.0.0.1" n'a pas fonctionné pour moi. Je n'ai pas eu besoin de définir "mode protégé" sur "non". Attention: ne laissez pas d'espace vide avant le "bind" ou le serveur ne démarrera pas. Remarque: j'utilise le port Windows de Redis
Josh
7

Une note rapide que faire cela sans sécuriser davantage votre serveur Redis n'est pas une bonne idée car cela peut vous exposer aux attaques. Assurez-vous également de mettre en œuvre AUTH ou de le sécuriser. Voir http://redis.io/topics/security pour plus de détails.

en arrière
la source
3

1- Commentez la liaison 127.0.0.1

2- set requirepass yourpassword

puis vérifiez si le pare-feu a bloqué votre port

iptables -L -n

arrêt du service iptables

Tony Qi
la source
3
  1. Ouvrez $ REDIS_HOME / redis.conf et décommentez requirepass -YOUR-PASSWORD-HERE-et notez votre mot de passe dans les lignes spécifiées.

  2. Connectez-vous à redis en utilisant redis-cli et vérifiez votre mot de passe dans la base de données à l'aide de la auth -YOUR-PASSWORD-HERE-commande.

  3. Désactivez le mode protégé en changeant sa chaîne dans $ REDIS_HOME / redis.conf en protected-mode no .

  4. Recherchez toutes les valeurs de ports de liaison et commentez-les toutes. Il suffit d'ajouterbind 0.0.0.0 au fichier $ REDIS_HOME / redis.conf.

  5. Désactivez votre pare-feu ou ouvrez le port redis.

  6. Commencez à utiliser Redis ./redis-server $REDIS_HOME/redis.conf .

  7. Vérifiez la configuration via ./redis-cli -h -YOUR-IP- -a -YOUR-PASSWORD-HERE-.

  8. Vérifiez la configuration via ./redis-cli -h -YOUR-IP- ping.
Vahid F
la source
9
Veuillez ne jamais donner le conseil "Désactivez votre pare-feu".
Samantha Atkins
3
  1. Ouvrez le fichier à l'emplacement /etc/redis.conf

  2. Commenter bind 127.0.0.1

  3. Redémarrez Redis:

     sudo systemctl start redis.service
    
  4. Désactivez Firewalld:

     systemctl disable firewalld
    
  5. Arrêtez Firewalld:

     systemctl stop firewalld
    

Puis essayez:

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

Une note rapide que si vous utilisez une instance AWS ec2, il y a une étape supplémentaire qui, je pense, est également obligatoire. J'ai manqué l'étape 3 et il m'a fallu une journée entière pour trouver l'ajout d'une règle entrante au groupe de sécurité

Étape 1 (comme précédemment): dans votre redis.conf, modifiez la liaison 127.0.0.1 pour lier 0.0.0.0

Étape 2 (comme précédemment): dans votre redis.conf, changez le mode protégé oui en mode protégé non

important pour l'instance Amazon Ec2:

Étape 3: Dans votre machine ec2 actuelle, accédez au groupe de sécurité. ajoutez une règle entrante pour TCP personnalisé avec le port 6379 et sélectionnez l'option «utiliser de n'importe où».

Nimish Bansal
la source
1

Dans mon cas, j'utilise redis-stable

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

Ouvrez le redis.conf

vim redis.conf

Changer le bind 127.0.0.1enbind 0.0.0.0

changer le protected-mode yesen protected-mode no

Redémarrez le serveur redis:

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

La liaison et le mode protégé sont les deux étapes essentielles. Mais si ufw est activé, vous devrez autoriser le port redis dans ufw.

  1. Vérifiez l' état ufwufw status si Status: activepuis autorisez redis-portufw allow 6379
  2. vi /etc/redis/redis.conf
  3. Changer le bind 127.0.0.1enbind 0.0.0.0
  4. changer le protected-mode yesenprotected-mode no
Gaurav Tyagi
la source