144

I can ping pong Redis on the server:

# redis-cli ping
PONG

But remotely, I got problems:

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

In config, I got the standard port:

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

So maybe I should open port 6379 on the remote Ubuntu machine? How do I do it?

4

10 回答 10

264

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

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

bind 127.0.0.1

bind 0.0.0.0

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

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

于 2013-09-30T09:53:05.460 回答
25

对我来说,我需要做以下事情:

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)保护我的服务器

于 2016-05-26T14:31:36.587 回答
7

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

于 2015-12-11T18:10:49.353 回答
4

绑定和保护模式都是必不可少的步骤。但是如果启用了ufw,那么你将不得不在 ufw 中允许 redis 端口。

  1. 检查ufw状态ufw status是否Status: 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
于 2020-03-28T06:40:10.723 回答
4

1-注释掉绑定127.0.0.1

2-设置要求密码

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

iptables -L -n

服务 iptables 停止

于 2017-07-05T09:40:03.830 回答
3

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

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

Step2(如前所述):在您的 redis.conf 中将 protected-mode yes 更改为 protected-mode no

对 Amazon Ec2 实例很重要:

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

于 2019-11-11T19:51:55.420 回答
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)
于 2017-11-20T10:09:49.780 回答
2
  1. 打开 $REDIS_HOME/redis.conf 并取消注释requirepass -YOUR-PASSWORD-HERE-并在指定的行中写下您的密码。

  2. 使用 redis-cli 登录 redis 并使用auth -YOUR-PASSWORD-HERE-命令在数据库中验证您的密码。

  3. 通过将 $REDIS_HOME/redis.conf 中的字符串更改为protected-mode no.

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

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

  6. 使用./redis-server $REDIS_HOME/redis.conf.

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

  8. 通过 . 检查配置./redis-cli -h -YOUR-IP- ping
于 2018-12-19T13:45:55.357 回答
2

另一个可能有用的注释。

Redis 可以绑定到多个 IP - 当您不想将它开放给整个世界(0.0.0.0)但只能在本地网络中访问它时,这非常有用。

  1. sudo nano /etc/redis/redis.conf
  2. 将您的本地网络 IP 添加到bind设置的末尾:

bind 127.0.0.1 10.0.0.1

  1. 重启服务:sudo service redis-server restart

现在您可以轻松地从同一网络中的其他计算机访问 redis,例如 redis-cli -h 10.0.0.1

于 2020-10-23T12:11:43.333 回答
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
于 2020-02-25T06:07:53.943 回答