Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ubuntu 为远程连接打开Redis端口_Ubuntu_Redis - Fatal编程技术网

Ubuntu 为远程连接打开Redis端口

Ubuntu 为远程连接打开Redis端口,ubuntu,redis,Ubuntu,Redis,我可以在服务器上乒乓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 speci

我可以在服务器上乒乓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服务器上进行远程访问

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

之后

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


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

请注意,在不进一步保护您的Redis服务器的情况下执行此操作不是一个好主意,因为它会让您面临攻击。确保还实现了AUTH或其他安全功能。有关详细信息,请参见。

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

1-注释掉
bind 127.0.0.1

2-将
保护模式
更改为


3-使用iptables保护我的服务器()

1-注释出绑定127.0.0.1

2-设置要求通过密码

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

iptables-L-n

服务iptables停止

  • 在位置
    /etc/redis.conf

    bind 127.0.0.1
    
  • 注释掉
    bind 127.0.0.1

  • 重新启动Redis:

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

     systemctl disable firewalld
    
     systemctl stop firewalld
    
  • 停止防火墙D:

     systemctl disable firewalld
    
     systemctl stop firewalld
    
  • 然后尝试:

    redis-cli -h 192.168.0.2(ip) -a redis(username)
    
  • 打开$REDIS_HOME/REDIS.conf并取消注释
    requirepass-YOUR-PASSWORD-HERE-
    ,然后在指定行中写下密码

  • 使用redis cli登录redis,并使用
    auth-your-password-HERE-
    命令验证数据库中的密码

  • 通过将$REDIS_HOME/REDIS.conf中的字符串更改为
    受保护模式no
    来禁用受保护模式

  • 搜索所有绑定端口值并注释所有值。只需将
    bind0.0.0
    添加到$REDIS_HOME/REDIS.conf文件中

  • 禁用防火墙或打开redis端口

  • 使用
    /redis server$redis\u HOME/redis.conf
    启动redis

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

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

  • 请注意,如果您使用的是AWSEC2实例,那么还有一个额外的步骤,我相信这也是必须的。我错过了第三步,花了整整一天的时间才找到向安全组添加入站规则的方法

    步骤1(如前所述):在redis.conf中,将bind127.0.0.1更改为bind0.0.0

    步骤2(如前所述):在redis.conf中,将受保护模式“是”更改为“受保护模式否”

    对于Amazon Ec2实例很重要: 步骤3:在当前ec2机器中,转到安全组。添加入站规则 对于带有6379端口的自定义TCP,请选择“从任何位置使用”选项

    就我而言,我使用的是redis stable

    打开redis.conf

    bind127.0.0.1
    更改为
    bind0.0.0

    保护模式yes
    更改为
    保护模式no

    重新启动redis服务器:


    绑定和保护模式都是基本步骤。 但是如果启用了ufwufw,则必须在ufw中允许redis端口

  • 检查ufw状态
    ufw状态
    如果
    状态:活动
    则允许redis端口
    ufw允许6379
  • vi/etc/redis/redis.conf
  • bind127.0.0.1
    更改为
    bind0.0.0
  • 保护模式yes
    更改为
    保护模式no

  • 另一个可能有用的注释

    Redis可以绑定到多个IP—当您不想向全世界开放它(
    0.0.0.0
    )而只想在本地网络中访问它时,这非常有用

  • sudo nano/etc/redis/redis.conf
  • 将本地网络IP添加到
    bind
    设置的末尾:
  • bind 127.0.0.1 10.0.0.1

  • 重新启动服务:
    sudo服务redis服务器重新启动
  • 现在,您可以轻松地从同一网络中的其他计算机访问redis,例如:。
    redis cli-h 10.0.0.1

    redis未在远程计算机上侦听?也许,如何检查您是否已禁用ufw?在配置文件中,我在字符串
    bind 127.0.0.1
    之后添加了字符串
    bind 0.0.0
    。重新启动redis。现在可以远程连接。如果我们单独使用
    bind0.0.0.0
    bind127.0.0.0.1 0.0.0
    @Nyxynyx 0.0.0绑定到所有适配器,有什么区别吗,所以没有必要。不过,这没什么区别。对任何ip呼叫开放redis安全吗?我们如何才能限制从特定IP访问redis?@MildlySerious非常感谢。我们已经浪费了将近两周的时间来弄清楚是防火墙还是网络或者其他问题。但是这个改变像champ一样有效,我不得不使用bind0.0.0.0。“绑定127.0.0.1”对我不起作用。我不需要将“保护模式”设置为“否”。警告:不要在“绑定”之前留下空白,否则服务器将无法启动。注意:我使用的是Redis的windows端口。请不要给出“禁用防火墙”的建议。对我来说,
    ufw
    是不同之处。谢谢!非常有用的建议2:-)这正是我所寻找的解决方案
    vim redis.conf
    
    /etc/init.d/redis-server stop
     redis-server redis.conf