Abra a porta Redis para conexões remotas

118

Posso fazer ping pong Redis no servidor:

# redis-cli ping
PONG

Mas, remotamente, tenho problemas:

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

Na configuração, obtive a porta padrão:

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

Então, talvez eu deva abrir a porta 6379 na máquina Ubuntu remota? Como eu faço isso?

Maxim Yefremov
fonte
redis não está ouvindo na máquina remota?
Sergio Tulentsev
talvez, como verificar
Maxim Yefremov
Você desativou o ufw?
insignar em

Respostas:

214

Você definiu a opção de vinculação para permitir acesso remoto no servidor redis?

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

bind 127.0.0.1

Depois de

bind 0.0.0.0

e execute sudo service redis-server restartpara reiniciar o servidor. Se esse não for o problema, você pode verificar os firewalls que podem bloquear o acesso.

Importante: Se você não usar um firewall (iptables, ufw ..) para controlar quem se conecta à porta em uso, QUALQUER UM pode se conectar a esta instância do Redis. Sem usar o Redis,AUTH isso significa que qualquer pessoa pode acessar / alterar / excluir seus dados. Esteja a salvo!

MildlySerious
fonte
2
no arquivo de configuração, adicionei string bind 0.0.0.0após string bind 127.0.0.1. Redis reiniciado. E agora pode se conectar remotamente.
Maxim Yefremov
Há alguma diferença se usarmos bind 0.0.0.0sozinho vsbind 127.0.0.1 0.0.0.0
Nyxynyx
1
@Nyxynyx 0.0.0.0 se liga a todos os adaptadores, então é desnecessário. Não deve fazer diferença, no entanto.
MildlySerious
1
É seguro abrir o redis para qualquer chamada de ip? Como podemos restringir o acesso ao redis de apenas alguns IPs?
brsbilgic
1
@MildlySerious muito obrigado. Perdemos quase 2 semanas tentando descobrir se firewall ou rede ou algum outro problema. Mas essa mudança funcionou como campeã.
kinnu
23

Para mim, eu precisava fazer o seguinte:

1- Comente bind 127.0.0.1

2- Mudar protected-modeparano

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

Abdo
fonte
1
Tive que usar o bind 0.0.0.0. "bind 127.0.0.1" não funcionou para mim. Não precisei definir o "modo protegido" como "não". Aviso: não deixe espaço vazio antes do "bind" ou o servidor não iniciará. Observação: estou usando a porta do Windows do Redis
Josh
7

Uma observação rápida de que fazer isso sem proteger ainda mais o servidor Redis não é uma boa ideia, pois pode deixá-lo vulnerável a ataques. Certifique-se de também implementar AUTH ou de outra forma proteger isso. Consulte http://redis.io/topics/security para obter detalhes.

para trás
fonte
3

1- Comente o bind 127.0.0.1

2- definir exigir a sua senha

em seguida, verifique se o firewall bloqueou sua porta

iptables -L -n

serviço iptables parar

tony qi
fonte
3
  1. Abra $ REDIS_HOME / redis.conf, descomente requirepass -YOUR-PASSWORD-HERE-e anote sua senha nas linhas especificadas.

  2. Faça login no redis usando redis-cli e verifique sua senha no banco de dados usando o auth -YOUR-PASSWORD-HERE-comando.

  3. Desative o modo protegido alterando sua string em $ REDIS_HOME / redis.conf para protected-mode no.

  4. Pesquise todos os valores de portas de ligação e comente todos eles. Basta adicionar bind 0.0.0.0ao arquivo $ REDIS_HOME / redis.conf.

  5. Desative seu firewall ou abra a porta redis.

  6. Comece a redis usando ./redis-server $REDIS_HOME/redis.conf.

  7. Verifique a configuração via ./redis-cli -h -YOUR-IP- -a -YOUR-PASSWORD-HERE-.

  8. Verifique a configuração via ./redis-cli -h -YOUR-IP- ping.
Vahid F
fonte
9
Nunca dê o conselho "Desative seu firewall".
Samantha Atkins de
3
  1. Abra o arquivo no local /etc/redis.conf

  2. Comente bind 127.0.0.1

  3. Reinicie o Redis:

     sudo systemctl start redis.service
    
  4. Desativar Firewalld:

     systemctl disable firewalld
    
  5. Pare Firewalld:

     systemctl stop firewalld
    

Então tente:

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

Uma observação rápida: se você estiver usando a instância AWS ec2, há mais uma etapa extra que acredito também ser obrigatória. Perdi a etapa 3 e levei um dia inteiro para descobrir como adicionar uma regra de entrada ao grupo de segurança

Etapa 1 (como anterior): em seu redis.conf, altere o bind 127.0.0.1 para o bind 0.0.0.0

Passo 2 (como anterior): em seu redis.conf mude do modo protegido sim para o modo protegido não

importante para a instância Amazon Ec2:

Passo 3: Em sua máquina ec2 atual, vá para o grupo de segurança. adicione uma regra de entrada para TCP personalizado com porta 6379 e selecione a opção "usar de qualquer lugar".

Nimish Bansal
fonte
1

No meu caso, estou usando redis-stable

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

Abra o redis.conf

vim redis.conf

Mude o bind 127.0.0.1parabind 0.0.0.0

mude o protected-mode yespara protected-mode no

Reinicie o redis-server:

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

Vincular e modo protegido são as etapas essenciais. Mas se o ufw estiver habilitado, você terá que fazer o redis port permitir no ufw.

  1. Verifique o status do ufwufw status se Status: activepermitir redis-portufw allow 6379
  2. vi /etc/redis/redis.conf
  3. Mude o bind 127.0.0.1parabind 0.0.0.0
  4. mude o protected-mode yesparaprotected-mode no
Gaurav Tyagi
fonte