为远程连接打开 Redis 端口

我可以在服务器上打乒乓球:

# redis-cli ping
PONG

但是,远程的,我有问题:

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

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

# 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? 我该怎么做?

185722 次浏览

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

前(档案 /etc/redis/redis.conf)

bind 127.0.0.1

之后

bind 0.0.0.0

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

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

快速注意,在没有进一步保护 Redis 服务器的情况下这样做不是一个好主意,因为它可能使您容易受到攻击。还要确保实现 AUTH 或以其他方式保护它。详情请参阅 http://redis.io/topics/security

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

1-评论 bind 127.0.0.1

2-将 protected-mode改为 no

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

1-注释掉 bind 127.0.0.1

2-设置要求通过你的密码

然后检查防火墙是否阻塞了你的端口

Iptables-L-n

服务 iptables 停止

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

  2. 评论 bind 127.0.0.1

  3. 返回文章页面重新开始:

     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. 打开 $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. 禁用防火墙或打开红外线端口。

  6. 使用 ./redis-server $REDIS_HOME/redis.conf开始重新编辑。

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

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

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

步骤1(如前所述) : 在 redis.conf 更改绑定127.0.0.1中绑定0.0.0.0

步骤2(如前所述) : 在 redis.conf 中,将 protected-mode yes 更改为 protected-mode no

重要的 Amazon Ec2实例:

Step3: 在当前的 ec2机器中,转到安全组,添加入站规则 为自定义 TCP 与6379端口,并选择选项“使用从任何地方”。

在我的情况下,我使用的是红外稳定

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

打开 redis.conf

vim redis.conf

bind 127.0.0.1改为 bind 0.0.0.0

protected-mode yes改为 protected-mode no

重新启动重建服务器:

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

绑定和保护模式 都是必不可少的步骤。 但是,如果 Ufw被启用,那么您将不得不使红地址端口允许 ufw。

  1. 如果 Status: active允许重写端口 ufw allow 6379,请检查 Ufw状态 ufw status
  2. vi /etc/redis/redis.conf
  3. bind 127.0.0.1改为 bind 0.0.0.0
  4. protected-mode yes改为 protected-mode no

另一个可能有用的提示。

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-cli -h 10.0.0.1