打开Redis端口进行远程连接


118

我可以在服务器上ping pong Redis:

# redis-cli ping
PONG

但是在远程,我遇到了问题:

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

在配置中,我得到了标准端口:

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

所以也许我应该在远程Ubuntu计算机上打开端口6379?我该怎么做?


redis不在远程机器上监听吗?
塞尔吉奥·图伦采夫2013年

也许,如何检查
Maxim Yefremov

您禁用了ufw吗?
签署

Answers:


214

您是否设置了绑定选项以允许Redis服务器上的远程访问?

之前(文件/etc/redis/redis.conf

bind 127.0.0.1

bind 0.0.0.0

并运行sudo service redis-server restart以重新启动服务器。如果这不是问题,则可能要检查可能阻止访问的所有防火墙。

重要:如果您不使用防火墙(iptables,ufw ..)来控制谁连接到正在使用的端口,则任何人都可以连接到此Redis实例。如果不使用RedisAUTH,则意味着任何人都可以访问/更改/删除您的数据。注意安全!


2
在配置文件中,我在string bind 0.0.0.0之后添加了string bind 127.0.0.1。重新启动redis。现在可以远程连接。
Maxim Yefremov 2013年

如果我们bind 0.0.0.0单独使用vsbind 127.0.0.1 0.0.0.0
Nyxynyx,2014年

1
@Nyxynyx 0.0.0.0绑定到所有适配器,因此没有必要。不过不应该有所作为。
2014年

1
打开redis到任何IP呼叫是否安全?我们如何限制仅从某些IP访问Redis?
brsbilgic

1
@MildlySerious非常感谢。我们已经浪费了将近2周的时间来弄清楚防火墙,网络还是其他问题。但是这种改变就像冠军一样。
Kinnu

23

对于我来说,我需要执行以下操作:

1-注释掉 bind 127.0.0.1

2-更改protected-modeno

3-通过iptableshttps://www.digitalocean.com/community/tutorials/how-to-implement-a-basic-firewall-template-with-iptables-on-ubuntu-14-04)保护我的服务器


1
我必须使用绑定0.0.0.0。“ bind 127.0.0.1”对我不起作用。我不需要将“保护模式”设置为“否”。警告:在“绑定”之前不要留空白,否则服务器将无法启动。注意:我正在使用Redis的Windows端口
Josh

7

快速说明在没有进一步保护Redis服务器的情况下执行此操作不是一个好主意,因为它会使您容易受到攻击。确保还实施AUTH或以其他方式保护它。有关详细信息,请参见http://redis.io/topics/security


3

1-注释掉绑定127.0.0.1

2-set requirepass yourpassword

然后检查防火墙是否阻止了您的端口

iptables -L -n

服务iptables停止


3
  1. 打开$ REDIS_HOME / redis.conf并取消注释,requirepass -YOUR-PASSWORD-HERE-并在指定的行中写下您的密码。

  2. 使用redis-cli登录到redis,并使用auth -YOUR-PASSWORD-HERE-command 验证数据库中的密码。

  3. 通过将$ REDIS_HOME / redis.conf中的字符串更改为来禁用保护模式protected-mode no

  4. 搜索所有绑定端口值并注释所有值。只需添加bind 0.0.0.0到$ REDIS_HOME / redis.conf文件。

  5. 禁用防火墙或打开Redis端口。

  6. 使用启动Redis ./redis-server $REDIS_HOME/redis.conf

  7. 通过检查配置./redis-cli -h -YOUR-IP- -a -YOUR-PASSWORD-HERE-

  8. 通过检查配置./redis-cli -h -YOUR-IP- ping

9
请永远不要给出“禁用防火墙”的建议。
萨曼莎·阿特金斯

3
  1. 在该位置打开文件 /etc/redis.conf

  2. 注释掉 bind 127.0.0.1

  3. 重新启动Redis:

     sudo systemctl start redis.service
    
  4. 禁用防火墙:

     systemctl disable firewalld
    
  5. 停止防火墙:

     systemctl stop firewalld
    

然后尝试:

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

1

快速说明一下,如果您使用的是AWS ec2实例,那么我认为还有一个额外的步骤也是必需的。我错过了步骤3,花了整整一整天的时间才想出向安全组添加入站规则

第1步(如前所述):在您的redis.conf中将bind 127.0.0.1更改为bind 0.0.0.0

第二步(如前所述):在您的redis.conf中将保护模式更改为保护模式

对于Amazon Ec2实例很重要:

步骤3:在您当前的ec2机器上,转到安全组。为具有6379端口的自定义TCP添加入站规则,然后选择“从任何地方使用”选项。


1

就我而言,我正在使用redis-stable

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

打开redis.conf

vim redis.conf

更改bind 127.0.0.1bind 0.0.0.0

更改protected-mode yesprotected-mode no

重新启动redis服务器:

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

0

绑定和保护模式都是必不可少的步骤。但是,如果启用了ufw,则必须在ufw中设置redis port allow。

  1. 检查ufw状态ufw statusStatus: active然后允许redis-portufw allow 6379
  2. vi /etc/redis/redis.conf
  3. 更改bind 127.0.0.1bind 0.0.0.0
  4. 更改protected-mode yesprotected-mode no
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.