Wie setze ich ein Passwort für Redis?

82

Ich arbeite mit Redis auf meinem lokalen Computer, daher muss ich kein Kennwort einrichten, um mit meinem PHP-Client eine Verbindung zum Server herzustellen (ich verwende Predis als Client). Ich verschiebe meine App jedoch auf einen Live-Server, daher möchte ich ein Kennwort einrichten, um eine Verbindung zu meinem Redis-Server herzustellen.

Ich habe einige Fragen:

  • Ich habe im ganzen Internet nachgesehen, wie das Passwort eingerichtet wird, und es sieht so aus, als müsste ich das Passwort in der redis.conf hinzufügen. Ich konnte jedoch nicht finden, was ich genau zur Konfigurationsdatei hinzufügen sollte, um das Passwort einzurichten.

  • auch in predis wie soll ich das passwort hinzufügen. Ich verwende das folgende Array von Parametern, um eine Verbindung zum Redis-Server herzustellen

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

soll ich das Passwort auf diese Weise hinzufügen?

> $my_server = array('host'     => '127.0.0.1','port'     =>
> 6379,'database' => 1,'password'=>password);
  • Letzte Frage, ich versuche meinen Redis-Server auf dem Live-Server zu stoppen. Jedes Mal, wenn ich den folgenden Befehl eingebe, wird die gleiche Fehlermeldung angezeigt

    Redis-Server stoppen

    [23925] 23 Sep 20:23:03 # Schwerwiegender Fehler, Konfigurationsdatei 'stop' kann nicht geöffnet werden

    Normalerweise gebe ich auf meinem lokalen Computer ein

    /etc/init.d/redis-server stop

Redis-Server zu stoppen, aber es funktioniert nicht auf meinem Live-Server, da es in meiner /etc/init.d keinen Prozess namens Redis-Server gibt

Don Gorgon
quelle

Antworten:

119

Um das Passwort festzulegen, bearbeiten Sie Ihre redis.conf-Datei und suchen Sie diese Zeile

# requirepass foobared

Kommentieren Sie es dann aus und ändern Sie es in Ihr Passwort. Stellen Sie sicher, dass Sie etwas ziemlich Langes auswählen, 32 Zeichen oder so, was wahrscheinlich gut wäre. Für einen externen Benutzer ist es einfach, mehr als 150.000 Passwörter pro Sekunde zu erraten, wie in den Hinweisen in der Konfigurationsdatei erwähnt.

Um sich mit Ihrem neuen Passwort mit predis zu authentifizieren, ist die von Ihnen angezeigte Syntax korrekt. Fügen Sie einfach ein Passwort als einen der Verbindungsparameter hinzu.

Um redis herunterzufahren ... überprüfen Sie Ihre Konfigurationsdatei auf die pidfileEinstellung, es wird wahrscheinlich sein

pidfile /var/run/redis.pid

Führen Sie in der Befehlszeile Folgendes aus:

cat /var/run/redis.pid

Dadurch erhalten Sie die Prozess-ID des laufenden Servers. Beenden Sie den Prozess dann einfach mit dieser PID:

kill 3832

Aktualisieren

Ich wollte auch hinzufügen, Sie könnten auch das machen, was /etc/init.d/redis-server stopSie gewohnt sind, auf Ihrem Live-Server zu arbeiten. Alle diese Dateien in /etc/init.d/ sind nur Shell-Skripte. Nehmen Sie das Redis-Server-Skript von Ihrem lokalen Server und kopieren Sie es auf den Live-Server am selben Speicherort. Schauen Sie dann einfach nach, was es mit vi oder was auch immer macht Wenn Sie gerne verwenden, müssen Sie möglicherweise einige Pfade und dergleichen ändern, aber es sollte ziemlich einfach sein.

profitphp
quelle
1
Dies scheint unter Windows nicht zu funktionieren. Ich habe beide conf-Dateien ausprobiert. Ich habe versucht, Redis in vielen Kombinationen neu zu starten. Das einzige, was funktionierte, war: "redis-cli config set requireepass somepass". Außerdem verlor der Server bei jedem Neustart / Herunterfahren das Kennwort. Also ich denke, das ist das mit Windows.
Jeffz
1
Abhängig vom gewählten Installationsprozess können wir die Redis-Konfigurationsdatei als "vi /etc/redis/redis.conf" oder "vi /etc/redis/6379.conf" (z. B.) haben, wobei "6379" der für das gewählte Wert ist Hafen!
Eduardo Lucio
Gibt es eine maximale Passwortlänge?
AndreasKralj
Wenn der Redis-Server ausgeführt wird, druckt er beim Start die PID oben aus ... es sollte Redis-Version = xxx Bits = 64, Commit = xxxxxx, geändert = 0, PID = xxxx
dave4jr
Redis wurde besser, Maschinen werden schneller. In der Konfigurationsdatei von Redis 6 heißt es: "Da Redis ziemlich schnell ist, kann ein externer Benutzer bis zu 1 Million Passwörter pro Sekunde gegen eine moderne Box versuchen." Es war 150K :-) Ich persönlich habe so etwas verwendet openssl rand 50 | openssl base64 -A, um ein langes Passwort zu generieren. Vielleicht ist es jedoch besser, jetzt ACL zu verwenden.
Lashae
64

Sie können auch den folgenden Befehl auf dem Client verwenden

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

Der obige Befehl wird p@ss$12E45als redisServerkennwort festgelegt.

Suhas Gaikwad
quelle
1
Nur zum Hinzufügen: Wie unter tutorialspoint.com/redis/redis_security.htm erwähnt, um sich über redis-cli anzumelden, gelangen Sie zuerst durch Ausführen in die redis-Shell redis-cli.exe. Geben Sie dann ein AUTH <password>.
Arun
6
Und um die Passwortauthentifizierung zu deaktivieren, verwenden Sie einfachconfig set requirepass ""
arun
3
Und es wird auf alt zurückgesetzt, wenn Sie redis neu starten. Fügen Sie also auch die conf-Datei hinzu.
TheGamblerRises
Config set requireepass "myPassword" Dieser Befehl funktioniert bei mir nicht. Wenn ich diesen Befehl ausführe, wird er fehlerfrei ausgeführt. Dann habe ich meine Redis-Instanz neu gestartet. Ich kann jedoch weiterhin von der CLI aus an die Redis-Instanz pingen, ohne ein Kennwort zu beweisen. Später überprüfte ich meine redis.conf auf das Attribut requireepass. Dort fand ich es im Standardzustand. Dies bedeutet, dass der Befehl config set requireepass den Wert von requireepass in meiner Konfiguration nicht festlegen konnte, weshalb es nicht funktionierte. Irgendwelche Vermutungen / Gründe, warum es nicht funktioniert?
Ashish Shukla
49

Beispiel:

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
Flavio Troia
quelle
Wenn man redis-py verwendet, lautet der zugehörige Befehl:redis.Redis.config_set('requirepass', "mycoolpassword")
jamescampbell
Config set requireepass "myPassword" Dieser Befehl funktioniert bei mir nicht. Wenn ich diesen Befehl ausführe, wird er fehlerfrei ausgeführt. Dann habe ich meine Redis-Instanz neu gestartet. Ich kann jedoch weiterhin von der CLI aus an die Redis-Instanz pingen, ohne ein Kennwort zu beweisen. Später überprüfte ich meine redis.conf auf das Attribut requireepass. Dort fand ich es im Standardzustand. Dies bedeutet, dass der Befehl config set requireepass den Wert von requireepass in meiner Konfiguration nicht festlegen konnte, weshalb es nicht funktionierte. Irgendwelche Vermutungen / Gründe, warum es nicht funktioniert?
Ashish Shukla
20
sudo nano /etc/redis/redis.conf 

Zeile suchen und auskommentieren # requirepass foobared, dann Server neu starten

Jetzt ist dein Passwort foobared

Saurabh Chandra Patel
quelle
17

mit redis-cli:

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

Dadurch wird das Passwort vorübergehend festgelegt (bis Redis oder Server neu gestartet werden).

Testpasswort:

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

Öffnen Sie die Redis-Konfigurationsdatei

sudo nano /etc/redis/redis.conf 

Passphrase setzen

ersetzen

# requirepass foobared

mit

requirepass YOURPASSPHRASE

Redis neu starten

redis-server restart
Und wenn.
quelle
4

Dazu müssen Sie die Redis-Konfigurationsdatei aktualisieren. Standardmäßig gibt es kein Kennwort für Redis.

01) Öffnen Sie die Redis-Konfigurationsdatei

sudo vi /etc/redis/redis.conf

finden requirepass Feld unter SECURITY Abschnitt und uncomment dass field.Then Ihr Passwort gesetzt statt „foobared“

# requirepass foobared

Es sollte so sein,

requirepass YOUR_PASSWORD

Starten Sie dann redis neu und starten Sie redis-cli.

Wenn Sie überprüfen müssen, ob Sie das Passwort richtig eingestellt haben, können Sie die folgenden Befehle in redis-cli ausführen.

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

`

Sithara
quelle
3

Schritt 1. Stoppen Sie den Redis-Server mit dem folgenden Befehl /etc/init.d/redis-server. Stoppen Sie Schritt 2. Geben Sie den Befehl ein: sudo nano /etc/redis/redis.conf

Schritt 3.Finden Sie das erforderliche Wort und entfernen Sie das Wort und ändern Sie es in IHR PASSWORT

Ex. Requepass Root

Sagar Jadhav
quelle
2

Ich konnte jedoch nicht finden, was ich genau zur Konfigurationsdatei hinzufügen sollte, um das Passwort einzurichten.

Die Konfigurationsdatei sollte sich unter befinden, /etc/redis/redis.confund das Kennwort kann im Abschnitt SICHERHEIT eingerichtet werden, der sich zwischen dem Abschnitt REPLICATION und LIMITS befinden sollte. Die Einrichtung des Passworts erfolgt mit der Anweisung requireepass. Weitere Informationen finden Sie in der Beschreibung des AUTH- Befehls.

yojimbo87
quelle
0

Wie setze ich ein Redis Passwort?

Schritt 1. Stoppen Sie den Redis-Server mit dem folgenden Befehl /etc/init.d/redis-server stop

Schritt 2. Geben Sie den Befehl ein: sudo nano /etc/redis/redis.conf

Schritt 3.Finden Sie das erforderliche Wort und entfernen Sie das Wort und ändern Sie es in IHR PASSWORT

Ex. Requepass Root

Sagar Jadhav
quelle