Öffnen Sie den Redis-Port für Remoteverbindungen


118

Ich kann Ping Pong Redis auf dem Server:

# redis-cli ping
PONG

Aber aus der Ferne habe ich Probleme:

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

In der Konfiguration habe ich den Standardport bekommen:

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

Vielleicht sollte ich also Port 6379 auf dem Remote-Ubuntu-Computer öffnen? Wie mache ich es?


redis hört nicht auf dem Remote-Computer?
Sergio Tulentsev

Vielleicht, wie man es überprüft
Maxim Yefremov

Haben Sie ufw deaktiviert?
Insign

Antworten:


214

Haben Sie die Bindungsoption festgelegt, um den Remotezugriff auf den Redis-Server zuzulassen?

Vorher (Datei /etc/redis/redis.conf)

bind 127.0.0.1

Nach dem

bind 0.0.0.0

und ausführen sudo service redis-server restart, um den Server neu zu starten. Wenn dies nicht das Problem ist, sollten Sie alle Firewalls überprüfen, die den Zugriff blockieren könnten.

Wichtig: Wenn Sie keine Firewall (iptables, ufw ..) verwenden, um zu steuern, wer eine Verbindung zu dem verwendeten Port herstellt, kann JEDER eine Verbindung zu dieser Redis-Instanz herstellen. Ohne Redis 'AUTH bedeutet dies, dass jeder auf Ihre Daten zugreifen / diese ändern / löschen kann. Sicher sein!


2
In der Konfigurationsdatei habe ich Zeichenfolge bind 0.0.0.0für Zeichenfolge hinzugefügt bind 127.0.0.1. Redis neu gestartet. Und jetzt kann Remote-Verbindung.
Maxim Yefremov

Gibt es einen Unterschied, wenn wir bind 0.0.0.0alleine gegenbind 127.0.0.1 0.0.0.0
Nyxynyx

1
@Nyxynyx 0.0.0.0 bindet an alle Adapter, ist also nicht erforderlich. Sollte aber keinen Unterschied machen.
MildlySerious

1
Ist es sicher, Redis für IP-Anrufe zu öffnen? Wie können wir den Zugriff auf Redis nur von bestimmten IPs aus einschränken?
Brsbilgic

1
@MildlySerious vielen Dank. Wir haben fast 2 Wochen damit verbracht, herauszufinden, ob es sich um eine Firewall, ein Netzwerk oder ein anderes Problem handelt. Aber diese Änderung funktionierte wie ein Champion.
Kinnu

23

Für mich musste ich Folgendes tun:

1- Auskommentieren bind 127.0.0.1

2- Wechseln Sie protected-modezuno

3- Schützen Sie meinen Server mit iptables( https://www.digitalocean.com/community/tutorials/how-to-implement-a-basic-firewall-template-with-iptables-on-ubuntu-14-04 )


1
Ich musste bind 0.0.0.0 verwenden. "bind 127.0.0.1" hat bei mir nicht funktioniert. Ich musste "protected-mode" nicht auf "no" setzen. Warnung: Lassen Sie vor dem "Binden" keinen leeren Speicherplatz, da der Server sonst nicht gestartet werden kann. Hinweis: Ich benutze den Windows-Port von Redis
Josh

7

Ein kurzer Hinweis, dass dies ohne weitere Sicherung Ihres Redis-Servers keine gute Idee ist, da Sie dadurch für Angriffe offen bleiben können. Stellen Sie sicher, dass Sie auch AUTH implementieren oder dies auf andere Weise sicherstellen. Weitere Informationen finden Sie unter http://redis.io/topics/security .


3

1- Auskommentieren binden 127.0.0.1

2- Setzen Sie die Anforderung, Ihr Passwort zu übergeben

Überprüfen Sie dann, ob die Firewall Ihren Port blockiert hat

iptables -L -n

Service Iptables stoppen


3
  1. Öffnen Sie $ REDIS_HOME / redis.conf und kommentieren Sie und requirepass -YOUR-PASSWORD-HERE-notieren Sie Ihr Passwort in den angegebenen Zeilen.

  2. Melden Sie sich mit redis-cli bei redis an und überprüfen Sie Ihr Passwort in der Datenbank mit dem auth -YOUR-PASSWORD-HERE-Befehl.

  3. Deaktivieren Sie den geschützten Modus, indem Sie die Zeichenfolge in $ REDIS_HOME / redis.conf in ändern protected-mode no.

  4. Suchen Sie nach allen Bindungsportwerten und kommentieren Sie alle. Fügen Sie einfach bind 0.0.0.0auf $ REDIS_HOME / redis.conf Datei.

  5. Deaktivieren Sie Ihre Firewall oder öffnen Sie den Redis-Port.

  6. Starten Sie redis mit ./redis-server $REDIS_HOME/redis.conf.

  7. Überprüfen Sie die Konfiguration über ./redis-cli -h -YOUR-IP- -a -YOUR-PASSWORD-HERE-.

  8. Überprüfen Sie die Konfiguration über ./redis-cli -h -YOUR-IP- ping.

9
Bitte geben Sie niemals den Rat "Deaktivieren Sie Ihre Firewall".
Samantha Atkins

3
  1. Öffnen Sie die Datei am Speicherort /etc/redis.conf

  2. Auskommentieren bind 127.0.0.1

  3. Starten Sie Redis neu:

     sudo systemctl start redis.service
    
  4. Firewall deaktivieren:

     systemctl disable firewalld
    
  5. Stoppen Sie Firewalld:

     systemctl stop firewalld
    

Dann versuche es:

redis-cli -h 192.168.0.2(ip) -a redis(username)

1

Ein kurzer Hinweis: Wenn Sie eine AWS ec2-Instanz verwenden, gibt es einen weiteren zusätzlichen Schritt, der meiner Meinung nach ebenfalls obligatorisch ist. Ich habe Schritt 3 verpasst und es dauerte einen ganzen Tag, bis ich herausgefunden hatte, ob ich der Sicherheitsgruppe eine eingehende Regel hinzufügen konnte

Schritt 1 (wie zuvor): In Ihrer redis.conf-Änderung binden Sie 127.0.0.1, um 0.0.0.0 zu binden

Schritt 2 (wie zuvor): Ändern Sie in Ihrer redis.conf den geschützten Modus Ja in den geschützten Modus Nein

wichtig für Amazon Ec2 Instance:

Schritt 3: Wechseln Sie auf Ihrem aktuellen ec2-Computer zur Sicherheitsgruppe. Fügen Sie eine eingehende Regel für benutzerdefiniertes TCP mit 6379-Port hinzu und wählen Sie die Option "Von überall verwenden".


1

In meinem Fall verwende ich Redis-Stable

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

Öffnen Sie die redis.conf

vim redis.conf

Ändern Sie das bind 127.0.0.1inbind 0.0.0.0

ändere das protected-mode yesauf protected-mode no

Starten Sie den Redis-Server neu:

/etc/init.d/redis-server stop
 redis-server redis.conf

0

Bind & Protected-Mode sind die wesentlichen Schritte. Wenn jedoch ufw aktiviert ist, müssen Sie den Redis-Port in ufw zulassen.

  1. Überprüfen Sie den UFW- Status, ufw statuswenn Sie Status: activedann Redis-Port zulassenufw allow 6379
  2. vi /etc/redis/redis.conf
  3. Ändern Sie das bind 127.0.0.1inbind 0.0.0.0
  4. ändere das protected-mode yesaufprotected-mode no
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.