当前位置:首页 > 问答 > 正文

redis服务器怎么设置才能连接别人远程的redis服务,有啥注意的地方

要让你本地的Redis服务器能够被其他人远程连接,本质上就是改变Redis默认的“只允许本地访问”的设置,打开一个对外的网络接口,这个过程有点像把你家房子的门从只允许家人用钥匙进出,改成允许知道地址和门牌号的客人来访,开门迎客的同时,安全问题就成了头等大事,下面我根据Redis官方文档和一些常见的运维实践,来详细说说具体怎么做和要注意什么。

第一步:找到并修改Redis的配置文件

Redis的所有行为都由一个叫 redis.conf 的文件控制,这个文件的位置因你的安装方式而异,常见的位置可能在 /etc/redis/redis.conf/usr/local/etc/redis.conf,你需要用文本编辑器(如vim、nano)打开这个文件,并找到以下几个关键设置进行修改。

绑定地址(最关键的一步) 在配置文件中,找到一行叫做 bind 的设置,默认情况下,它通常是:

bind 127.0.0.1 -::1

这行配置的意思是,Redis只监听来自本机(127.0.0.1这个回环地址)的网络连接,其他任何网络上的计算机发来的连接请求都会被拒绝。 要允许远程连接,你需要将这行修改掉,有几种改法:

  • 允许任何IP地址连接(最开放,也最危险):将其注释掉(在行首加一个 ),或者改成:

    bind 0.0.0.0 -::1

    0.0.0 是一个特殊地址,代表“本机的所有IP地址”,这样改之后,Redis会监听服务器上所有网卡的连接,意味着任何能通过网络访问到你服务器的机器都可以尝试连接。除非你处于绝对可信的内网环境,否则强烈不推荐在生产环境中这样设置。

  • 允许特定IP地址段连接(推荐):如果你知道连接方的IP范围,可以精确指定,只允许IP地址为 168.1.100 的机器和本机连接:

    bind 127.0.0.1 192.168.1.100

    这样既保证了安全性,又实现了远程连接。

保护模式(安全卫士) Redis有一个内置的安全功能,叫做“保护模式”(protected mode),当你没有设置密码(下面会讲到),并且Redis发现它正在监听一个非回环地址(0.0.0)时,保护模式会自动开启,开启后,Redis会拒绝所有来自外部的连接请求,这是Redis防止你因配置失误而导致数据库完全暴露的最后一道防线。 对应的配置是:

protected-mode yes

如果你已经设置了密码,并且确实需要关闭保护模式以允许远程连接,可以将其改为:

protected-mode no

但更安全的做法是保持 protected-mode yes 不变,同时设置一个强密码,这样,即使你的 bind 设置不当,保护模式也能起到保护作用。

设置访问密码(必备的安全措施) 让Redis对外开放而不设密码,就像把银行金库的大门敞开一样危险,你必须设置一个强大的密码,在配置文件中找到 requirepass 配置项,默认是被注释的:

# requirepass foobared

去掉注释,把 foobared 替换成一个非常复杂、难以破解的密码。

requirepass MySuperStrongPassword123!

设置密码后,任何客户端在连接Redis时,都必须先通过 AUTH 命令提供正确的密码才能执行操作。

配置防火墙(网络层面的防护) 即使Redis服务本身配置好了,服务器操作系统的防火墙也可能阻止外部连接,Redis默认使用 6379 端口,你需要在服务器的防火墙规则中,放行对6379端口的访问,并且最好只允许你信任的特定IP地址访问这个端口,在Linux上使用ufw防火墙,可以这样命令:

sudo ufw allow from 192.168.1.100 to any port 6379

这条命令表示只允许IP 168.1.100 连接本机的6379端口,这为你的Redis服务增加了一层额外的网络隔离保护。

第二步:重启Redis服务使配置生效

修改完配置文件后,你必须重启Redis服务才能让新的设置生效,重启命令取决于你的操作系统和Redis的安装方式,常见的有:

sudo systemctl restart redis

或者

sudo service redis-server restart

重启后,你可以通过 sudo systemctl status redis 命令检查服务是否正常运行。

最重要的注意事项总结

  1. 安全第一:绝对不要在没有设置强密码的情况下将Redis暴露在公网(Internet)上,黑客有自动化工具全天候扫描开放的Redis服务器,一旦被发现,他们可以在几分钟内清空你的数据、植入勒索病毒或利用你的服务器发起网络攻击。
  2. 最小权限原则:在配置 bind 指令和防火墙规则时,遵循最小权限原则,只允许确实需要连接的IP地址进行访问,不要图省事直接开放给所有IP(0.0.0)。
  3. 使用非默认端口:可以考虑将Redis服务运行在一个非默认的端口上(6380),这可以避免一些简单的自动扫描,修改配置中的 port 6379 即可,但这只是一种“隐蔽安全”,不能替代强密码。
  4. 加密传输(高级选项):如果数据非常敏感,且网络环境不可信(如通过公网传输),应考虑使用SSL/TLS加密连接,但这需要更复杂的配置,包括证书管理等。
  5. 测试连接:配置完成后,不要直接在服务器上测试,应该从另一台获准连接的远程机器上,使用Redis客户端命令尝试连接,
    redis-cli -h 你的服务器公网IP -p 6379 -a 你设置的密码

    连接成功后执行一个简单的 ping 命令,看是否返回 PONG

让Redis支持远程连接在技术上是简单的,但核心难点和重点全在于安全配置,每一次放宽网络访问限制,都必须同步加强身份验证和授权措施,否则极易导致严重的安全事故。

redis服务器怎么设置才能连接别人远程的redis服务,有啥注意的地方