Làm thế nào để đặt mật khẩu cho Redis?


82

Tôi đang làm việc với redis trên máy cục bộ của mình nên tôi không thực sự cần thiết lập mật khẩu để kết nối với máy chủ bằng ứng dụng khách php của mình (tôi đang sử dụng predis làm ứng dụng khách). Tuy nhiên, tôi đang chuyển ứng dụng của mình sang một máy chủ trực tiếp, vì vậy tôi muốn thiết lập mật khẩu để kết nối với máy chủ redis của mình.

Tôi có một số câu hỏi:

  • Tôi đã kiểm tra khắp nơi trên internet về cách thiết lập mật khẩu và có vẻ như tôi cần thêm mật khẩu vào redis.conf. Tôi không thể tìm thấy những gì tôi nên thêm chính xác vào tệp cấu hình để thiết lập mật khẩu.

  • cũng trong phần trước làm thế nào tôi nên thêm mật khẩu. Tôi đang sử dụng dãy tham số sau để kết nối với máy chủ redis

    $ my_server = array ('host' => '127.0.0.1', 'port' => 6379, 'database' => 1);

tôi có nên thêm mật khẩu theo cách này không?

> $my_server = array('host'     => '127.0.0.1','port'     =>
> 6379,'database' => 1,'password'=>password);
  • câu hỏi cuối cùng, tôi đang cố gắng dừng máy chủ redis của mình trên máy chủ trực tiếp. Mỗi khi tôi nhập lệnh sau, tôi vẫn nhận được cùng một thông báo lỗi

    redis-server dừng

    [23925] 23 tháng 9 20:23:03 # Lỗi nghiêm trọng, không thể mở tệp cấu hình 'dừng'

    thường trên máy cục bộ của tôi, tôi nhập

    /etc/init.d/redis-server dừng

để dừng máy chủ redis nhưng nó không hoạt động trên máy chủ trực tiếp của tôi vì không có quá trình nào được gọi là redis-server trong /etc/init.d của tôi

Câu trả lời:


119

Để đặt mật khẩu, hãy chỉnh sửa tệp redis.conf của bạn, tìm dòng này

# requirepass foobared

Sau đó bỏ ghi chú nó và thay đổi mật khẩu của bạn. Hãy chắc chắn rằng bạn chọn thứ gì đó khá dài, 32 ký tự hoặc lâu hơn có thể sẽ tốt, người dùng bên ngoài rất dễ đoán lên tới 150k mật khẩu mỗi giây, như các ghi chú trong tệp cấu hình đề cập.

Để xác thực bằng mật khẩu mới của bạn bằng cách sử dụng vị ngữ, cú pháp bạn đã hiển thị là chính xác. Chỉ cần thêm mật khẩu làm một trong các tham số kết nối.

Để tắt redis ... hãy kiểm tra tệp cấu hình của bạn để biết pidfilecài đặt, nó có thể sẽ

pidfile /var/run/redis.pid

Từ dòng lệnh, chạy:

cat /var/run/redis.pid

Điều đó sẽ cung cấp cho bạn id quy trình của máy chủ đang chạy, sau đó chỉ cần hủy quy trình bằng cách sử dụng pid đó:

kill 3832

Cập nhật

Tôi cũng muốn nói thêm, bạn cũng có thể làm cho công cụ /etc/init.d/redis-server stopbạn đang sử dụng để làm việc trên máy chủ trực tiếp của mình. Tất cả các tệp đó trong /etc/init.d/ chỉ là các tập lệnh shell, hãy lấy tập lệnh redis-server ra khỏi máy chủ cục bộ của bạn và sao chép nó vào máy chủ trực tiếp ở cùng một vị trí, sau đó chỉ cần xem nó hoạt động gì với vi hoặc bất cứ điều gì bạn muốn sử dụng, bạn có thể cần phải sửa đổi một số đường dẫn và tương tự, nhưng nó phải khá đơn giản.


1
Điều này dường như không hoạt động trên Windows. Tôi đã thử cả hai tệp conf. Tôi đã thử khởi động lại Redis theo nhiều cách kết hợp. Điều duy nhất hoạt động là: "redis-cli config set requestpass somepass". Ngoài ra, mỗi khi máy chủ được khởi động lại / tắt, nó sẽ bị mất mật khẩu. Vì vậy, tôi đoán, đó là điều đó với cửa sổ.
Jeffz

1
Tùy thuộc vào quá trình cài đặt đã chọn, chúng tôi có thể có tệp cấu hình Redis là "vi /etc/redis/redis.conf" hoặc "vi /etc/redis/6379.conf" (ví dụ: "6379" là giá trị được chọn cho Hải cảng!
Eduardo Lucio

Có độ dài mật khẩu tối đa không?
AndreasKralj

Ngoài ra, nếu máy chủ redis đang chạy, nó in ra các pid ở đầu khi bắt đầu ... nó nên nói Redis version = xxx bit = 64, cam kết = xxxxxx, sửa đổi = 0, pid = xxxx
dave4jr

Redis trở nên tốt hơn, máy móc trở nên nhanh hơn. Tệp cấu hình của Redis 6 nói rằng "vì Redis khá nhanh nên người dùng bên ngoài có thể thử tối đa 1 triệu mật khẩu mỗi giây đối với một hộp hiện đại". Đó là 150K :-) Cá nhân tôi đã sử dụng một cái gì đó như thế này openssl rand 50 | openssl base64 -Ađể tạo một mật khẩu dài. Tuy nhiên có lẽ tốt hơn là sử dụng ACL bây giờ.
Lashae

64

bạn cũng có thể sử dụng lệnh sau trên máy khách

cmd :: config set requirepass p@ss$12E45

lệnh trên sẽ được đặt p@ss$12E45làm redismật khẩu máy chủ.


1
Chỉ cần thêm: Như đã đề cập tại tutorialspoint.com/redis/redis_security.htm để đăng nhập qua redis-cli, trước tiên hãy vào trình bao redis bằng cách chạy redis-cli.exe. Sau đó gõ AUTH <password>.
arun

6
Và để tắt xác thực mật khẩu, chỉ cần sử dụngconfig set requirepass ""
arun

3
Và nó sẽ đặt lại về cũ nếu bạn khởi động lại redis. Vì vậy, hãy thêm vào tệp conf.
theGamblerRises

Đặt cấu hình requestpass "myPassword" lệnh này không hoạt động đối với tôi, khi tôi thực hiện lệnh này thì nó chạy không có lỗi. Sau đó, tôi khởi động lại phiên bản Redis của mình. Nhưng tôi vẫn có thể ping đến Redis instance từ CLI mà không cần chứng minh bất kỳ mật khẩu nào. Sau đó, tôi đã kiểm tra redis.conf của mình cho thuộc tính requestpass, ở đó tôi thấy nó ở trạng thái mặc định, có nghĩa là lệnh config set requestpass không thể đặt giá trị của requestpass trong cấu hình của tôi, đó là lý do nó không hoạt động. Bất kỳ phỏng đoán / lý do tại sao nó không hoạt động?
Ashish Shukla

49

Thí dụ:

redis 127.0.0.1:6379> AUTH PASSWORD
(error) ERR Client sent AUTH, but no password is set
redis 127.0.0.1:6379> CONFIG SET requirepass "mypass"
OK
redis 127.0.0.1:6379> AUTH mypass
Ok

Nếu một người đang sử dụng redis-py, lệnh liên quan là:redis.Redis.config_set('requirepass', "mycoolpassword")
jamescampbell

Đặt cấu hình requestpass "myPassword" lệnh này không hoạt động đối với tôi, khi tôi thực hiện lệnh này thì nó chạy không có lỗi. Sau đó, tôi khởi động lại phiên bản Redis của mình. Nhưng tôi vẫn có thể ping đến Redis instance từ CLI mà không cần chứng minh bất kỳ mật khẩu nào. Sau đó, tôi đã kiểm tra redis.conf của mình cho thuộc tính requestpass, ở đó tôi thấy nó ở trạng thái mặc định, có nghĩa là lệnh config set requestpass không thể đặt giá trị của requestpass trong cấu hình của tôi, đó là lý do nó không hoạt động. Bất kỳ phỏng đoán / lý do tại sao nó không hoạt động?
Ashish Shukla

20
sudo nano /etc/redis/redis.conf 

tìm và bỏ ghi chú dòng # requirepass foobared, sau đó khởi động lại máy chủ

bây giờ mật khẩu của bạn là foobared


17

sử dụng redis-cli:

root@server:~# redis-cli 
127.0.0.1:6379> CONFIG SET requirepass secret_password
OK

điều này sẽ đặt mật khẩu tạm thời (cho đến khi redis hoặc máy chủ khởi động lại)

mật khẩu kiểm tra:

root@server:~# redis-cli 
127.0.0.1:6379> AUTH secret_password
OK

7

mở tệp cấu hình redis

sudo nano /etc/redis/redis.conf 

đặt cụm mật khẩu

thay thế

# requirepass foobared

với

requirepass YOURPASSPHRASE

khởi động lại redis

redis-server restart

4

Vì vậy, bạn cần cập nhật tệp cấu hình redis, theo mặc định, không có bất kỳ mật khẩu nào cho redis.

01) mở tệp cấu hình redis

sudo vi /etc/redis/redis.conf

tìm trường requestpass trong phần SECURITY và bỏ ghi chú trường đó. Sau đó đặt mật khẩu của bạn thay vì "foobared"

# requirepass foobared

Nó sẽ giống như,

requirepass YOUR_PASSWORD

Sau đó khởi động lại redis và bắt đầu redis-cli.

Nếu bạn cần kiểm tra xem bạn đã đặt mật khẩu chính xác hay chưa, bạn có thể chạy bên dưới dấu phẩy trong redis-cli.

sithara@sithara-X555UJ ~ $ redis-cli
127.0.0.1:6379> set key1 18
(error) NOAUTH Authentication required.
127.0.0.1:6379> auth admin
OK
127.0.0.1:6379> get key1
(nil)
127.0.0.1:6379> exit


sithara@sithara-X555UJ ~ $ redis-cli
127.0.0.1:6379> set key1 18
(error) NOAUTH Authentication required.
127.0.0.1:6379> auth admin
OK
127.0.0.1:6379> set key2 check
OK
127.0.0.1:6379> get key2
"check"
127.0.0.1:6379> get key1
(nil)
127.0.0.1:6379> set key1 20
OK
127.0.0.1:6379> get key1
"20"
127.0.0.1:6379> exit

`


3

bước 1. dừng máy chủ redis bằng cách sử dụng lệnh bên dưới /etc/init.d/redis-server dừng bước 2. lệnh trung tâm: sudo nano /etc/redis/redis.conf

bước 3. tìm # requestpass foobared từ và xóa # và thay đổi foobared thành MẬT KHẨU CỦA BẠN

Ví dụ. root requestpass


2

tôi không thể tìm thấy mặc dù những gì tôi nên thêm chính xác vào tệp cấu hình để thiết lập mật khẩu.

Tệp cấu hình phải được đặt tại /etc/redis/redis.confvà có thể thiết lập mật khẩu trong phần BẢO MẬT, phần này sẽ nằm giữa phần REPLICATION và LIMITS. Thiết lập mật khẩu được thực hiện bằng cách sử dụng chỉ thị yêu cầu. Để biết thêm thông tin, hãy thử xem mô tả lệnh AUTH .


0

Làm thế nào để đặt mật khẩu redis?

bước 1. dừng máy chủ redis bằng lệnh dưới đây /etc/init.d/redis-server dừng

bước 2 lệnh trung tâm: sudo nano /etc/redis/redis.conf

bước 3. tìm # requestpass foobared từ và xóa # và thay đổi foobared thành MẬT KHẨU CỦA BẠN

Ví dụ. root requestpass

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.