Mở cổng Redis để kết nối từ xa


118

Tôi có thể chơi bóng bàn Redis trên máy chủ:

# redis-cli ping
PONG

Nhưng từ xa, tôi gặp vấn đề:

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

Trong cấu hình, tôi có cổng tiêu chuẩn:

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

Vì vậy, có lẽ tôi nên mở cổng 6379 trên máy Ubuntu từ xa? Tôi phải làm nó như thế nào?


redis không nghe trên máy từ xa?
Sergio Terrysev

có lẽ, làm thế nào để kiểm tra xem nó
Maxim Yefremov

Bạn đã vô hiệu hóa ufw chưa?
đăng nhập

Câu trả lời:


214

Bạn đã đặt tùy chọn liên kết để cho phép truy cập từ xa trên máy chủ redis chưa?

Trước (tệp /etc/redis/redis.conf)

bind 127.0.0.1

Sau

bind 0.0.0.0

và chạy sudo service redis-server restartđể khởi động lại máy chủ. Nếu đó không phải là vấn đề, bạn có thể muốn kiểm tra bất kỳ tường lửa nào có thể chặn quyền truy cập.

Quan trọng: Nếu bạn không sử dụng tường lửa (iptables, ufw ..) để kiểm soát ai kết nối với cổng đang sử dụng, BẤT KỲ AI có thể kết nối với phiên bản Redis này. Không sử dụng Redis 'AUTH có nghĩa là bất kỳ ai cũng có thể truy cập / thay đổi / xóa dữ liệu của bạn. Hãy an toàn!


2
trong tệp cấu hình, tôi đã thêm chuỗi bind 0.0.0.0sau chuỗi bind 127.0.0.1. Đã khởi động lại redis. Và bây giờ có thể kết nối từ xa.
Maxim Yefremov

Có sự khác biệt nếu chúng tôi sử dụng bind 0.0.0.0một mình vsbind 127.0.0.1 0.0.0.0
Nyxynyx

1
@Nyxynyx 0.0.0.0 liên kết với tất cả các bộ điều hợp, vì vậy không cần thiết. Tuy nhiên, không nên tạo ra sự khác biệt.
MildlySerious

1
Có an toàn khi mở redis cho bất kỳ cuộc gọi ip nào không? Làm thế nào chúng tôi có thể hạn chế truy cập redis chỉ từ một số IP nhất định?
brsbilgic

1
@MildlySerious cảm ơn rất nhiều. Chúng tôi đã lãng phí gần 2 tuần để tìm hiểu xem tường lửa hay mạng hay một số vấn đề khác. Nhưng sự thay đổi này đã hoạt động như một nhà vô địch.
kinnu

23

Đối với tôi, tôi cần phải làm những điều sau:

1- Nhận xét bind 127.0.0.1

2- Thay đổi protected-modethànhno

3- Bảo vệ máy chủ của tôi bằng iptables( https://www.digitalocean.com/community/tutorials/how-to-implement-a-basic-firewall-template-with-iptables-on-ubuntu-14-04 )


1
Tôi đã phải sử dụng ràng buộc 0.0.0.0. "bind 127.0.0.1" không hoạt động với tôi. Tôi không cần đặt "chế độ bảo vệ" thành "không". Cảnh báo: Không để trống trước khi "ràng buộc" nếu không máy chủ sẽ không khởi động. Lưu ý: Tôi đang sử dụng cổng windows của Redis
Josh

7

Một lưu ý nhanh rằng thực hiện điều này mà không bảo mật thêm máy chủ Redis của bạn không phải là một ý tưởng hay vì nó có thể khiến bạn bị tấn công. Đảm bảo cũng triển khai AUTH hoặc bảo mật điều đó. Xem http://redis.io/topics/security để biết chi tiết.


3

1- Nhận xét ra ràng buộc 127.0.0.1

2- thiết lập mật khẩu yêu cầu của bạn

sau đó kiểm tra xem tường lửa có chặn cổng của bạn không

iptables -L -n

dịch vụ iptables dừng


3
  1. Mở $ REDIS_HOME / redis.conf và bỏ ghi chú requirepass -YOUR-PASSWORD-HERE-và ghi lại mật khẩu của bạn trong các dòng được chỉ định.

  2. Đăng nhập redis bằng redis-cli và xác minh mật khẩu của bạn trong cơ sở dữ liệu bằng auth -YOUR-PASSWORD-HERE-lệnh.

  3. Tắt chế độ được bảo vệ bằng cách thay đổi chuỗi của nó trong $ REDIS_HOME / redis.conf thành protected-mode no.

  4. Tìm kiếm tất cả các giá trị cổng ràng buộc và nhận xét tất cả chúng. Chỉ cần thêm bind 0.0.0.0vào tệp $ REDIS_HOME / redis.conf.

  5. Tắt tường lửa của bạn hoặc mở cổng redis.

  6. Bắt đầu sử dụng redis ./redis-server $REDIS_HOME/redis.conf.

  7. Kiểm tra cấu hình thông qua ./redis-cli -h -YOUR-IP- -a -YOUR-PASSWORD-HERE-.

  8. Kiểm tra cấu hình thông qua ./redis-cli -h -YOUR-IP- ping.

9
Xin đừng bao giờ đưa ra lời khuyên "Tắt tường lửa của bạn".
Samantha Atkins

3
  1. Mở tệp tại vị trí /etc/redis.conf

  2. Bình luận bind 127.0.0.1

  3. Khởi động lại Redis:

     sudo systemctl start redis.service
    
  4. Tắt Firewalld:

     systemctl disable firewalld
    
  5. Dừng Firewalld:

     systemctl stop firewalld
    

Vậy hãy thử đi:

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

1

Một lưu ý nhanh rằng nếu bạn đang sử dụng phiên bản AWS ec2 thì có một bước bổ sung nữa mà tôi tin rằng cũng là bắt buộc. Tôi đã bỏ lỡ bước 3 và tôi đã mất cả ngày để tìm cách thêm quy tắc đến vào nhóm bảo mật

Bước 1 (như trước): trong thay đổi redis.conf của bạn, ràng buộc 127.0.0.1 thành ràng buộc 0.0.0.0

Bước 2 (như trước): trong redis.conf của bạn thay đổi chế độ bảo vệ có thành chế độ bảo vệ không

quan trọng đối với Phiên bản Amazon Ec2:

Bước 3: Trong máy ec2 hiện tại của bạn, hãy chuyển đến nhóm bảo mật. thêm một quy tắc đến cho TCP tùy chỉnh với cổng 6379 và chọn tùy chọn "sử dụng từ mọi nơi".


1

Trong trường hợp của tôi, tôi đang sử dụng redis-stable

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

Mở redis.conf

vim redis.conf

Thay đổi bind 127.0.0.1thànhbind 0.0.0.0

thay đổi protected-mode yesthành protected-mode no

Khởi động lại máy chủ redis:

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

0

Cả hai chế độ ràng buộc và bảo vệ đều là những bước cần thiết. Nhưng nếu ufw được bật thì bạn sẽ phải đặt cổng redis cho phép trong ufw.

  1. Kiểm tra trạng thái ufwufw status nếu Status: activesau đó cho phép redis-portufw allow 6379
  2. vi /etc/redis/redis.conf
  3. Thay đổi bind 127.0.0.1thànhbind 0.0.0.0
  4. thay đổi protected-mode yesthànhprotected-mode no
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.