Apri la porta Redis per le connessioni remote


118

Posso pingare Redis sul server:

# redis-cli ping
PONG

Ma a distanza, ho problemi:

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

In config, ho ottenuto la porta 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

Quindi forse dovrei aprire la porta 6379 sulla macchina Ubuntu remota? Come lo faccio?


redis non è in ascolto sulla macchina remota?
Sergio Tulentsev

forse, come controllarlo
Maxim Yefremov

Hai disabilitato ufw?
insegna del

Risposte:


214

Hai impostato l'opzione bind per consentire l'accesso remoto sul server redis?

Prima (file /etc/redis/redis.conf)

bind 127.0.0.1

Dopo

bind 0.0.0.0

ed esegui sudo service redis-server restartper riavviare il server. Se questo non è il problema, potresti voler controllare eventuali firewall che potrebbero bloccare l'accesso.

Importante: se non utilizzi un firewall (iptables, ufw ..) per controllare chi si connette alla porta in uso, CHIUNQUE può connettersi a questa istanza di Redis. Senza usare RedisAUTH significa che chiunque può accedere / modificare / eliminare i tuoi dati. Stai attento!


2
nel file di configurazione ho aggiunto una stringa bind 0.0.0.0dopo l'altra bind 127.0.0.1. Redis riavviato. E ora può connettersi in remoto.
Maxim Yefremov

C'è qualche differenza se usiamo bind 0.0.0.0da solo vsbind 127.0.0.1 0.0.0.0
Nyxynyx

1
@Nyxynyx 0.0.0.0 si lega a tutti gli adattatori, quindi non è necessario. Tuttavia, non dovrebbe fare la differenza.
MildlySerious

1
È sicuro aprire redis a qualsiasi chiamata IP? Come possiamo limitare l'accesso ai redis solo da determinati IP?
brsbilgic

1
@MildlySerious grazie mille. Abbiamo sprecato quasi 2 settimane per capire se il firewall o la rete o qualche altro problema. Ma questo cambiamento ha funzionato come un campione.
kinnu

23

Per me, dovevo fare quanto segue:

1- Commenta bind 127.0.0.1

2- Passare protected-modeano

3- Proteggi il mio server con iptables( https://www.digitalocean.com/community/tutorials/how-to-implement-a-basic-firewall-template-with-iptables-on-ubuntu-14-04 )


1
Ho dovuto usare bind 0.0.0.0. "bind 127.0.0.1" non ha funzionato per me. Non avevo bisogno di impostare "modalità protetta" su "no". Attenzione: non lasciare spazi vuoti prima del "bind" o il server non si avvia. Nota: sto utilizzando il port Windows di Redis
Josh

7

Una breve nota che fare ciò senza proteggere ulteriormente il tuo server Redis non è una buona idea in quanto può lasciarti aperto agli attacchi. Assicurati di implementare anche AUTH o di proteggerlo in altro modo. Vedere http://redis.io/topics/security per i dettagli.


3

1- Commenta il binding 127.0.0.1

2- imposta requirepass yourpassword

quindi controlla se il firewall ha bloccato la tua porta

iptables -L -n

servizio iptables stop


3
  1. Apri $ REDIS_HOME / redis.conf e decommenta requirepass -YOUR-PASSWORD-HERE-e annota la tua password nelle righe specificate.

  2. Accedi a redis usando redis-cli e verifica la tua password nel database usando il auth -YOUR-PASSWORD-HERE-comando.

  3. Disabilita la modalità protetta cambiando la sua stringa in $ REDIS_HOME / redis.conf in protected-mode no.

  4. Cerca tutti i valori delle porte bind e commentali tutti. Basta aggiungerlo bind 0.0.0.0al file $ REDIS_HOME / redis.conf.

  5. Disabilita il firewall o apri la porta Redis.

  6. Inizia a usare Redis ./redis-server $REDIS_HOME/redis.conf.

  7. Verificare la configurazione tramite ./redis-cli -h -YOUR-IP- -a -YOUR-PASSWORD-HERE-.

  8. Verificare la configurazione tramite ./redis-cli -h -YOUR-IP- ping.

9
Per favore, non dare mai il consiglio "Disabilita il tuo firewall".
Samantha Atkins

3
  1. Apri il file nella posizione /etc/redis.conf

  2. Commentare bind 127.0.0.1

  3. Riavvia Redis:

     sudo systemctl start redis.service
    
  4. Disabilita Firewalld:

     systemctl disable firewalld
    
  5. Arresta Firewalld:

     systemctl stop firewalld
    

Allora prova:

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

1

Una breve nota che se stai usando l'istanza ec2 di AWS, c'è un ulteriore passaggio in più che credo sia obbligatorio. Ho perso il passaggio 3 e mi ci è voluto tutto il giorno per capire come aggiungere una regola in entrata al gruppo di sicurezza

Passaggio 1 (come precedente): nel tuo redis.conf cambia bind 127.0.0.1 in bind 0.0.0.0

Passaggio 2 (come precedente): nel tuo redis.conf cambia la modalità protetta sì in modalità protetta no

importante per l'istanza Amazon Ec2:

Passaggio 3: nella macchina ec2 corrente vai al gruppo di sicurezza. aggiungi una regola in entrata per TCP personalizzato con porta 6379 e seleziona l'opzione "usa da qualsiasi luogo".


1

Nel mio caso, sto usando redis-stable

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

Apri il file redis.conf

vim redis.conf

Cambia il bind 127.0.0.1abind 0.0.0.0

cambia protected-mode yesin protected-mode no

Riavvia il server redis:

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

0

Bind e modalità protetta sono entrambi i passaggi essenziali. Ma se ufw è abilitato, dovrai abilitare la porta redis in ufw.

  1. Controlla lo stato di ufwufw status se Status: activepoi consenti redis-portufw allow 6379
  2. vi /etc/redis/redis.conf
  3. Cambia il bind 127.0.0.1abind 0.0.0.0
  4. cambia protected-mode yesinprotected-mode no
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.