Otwórz port Redis dla połączeń zdalnych


118

Mogę pingować ponga Redis na serwerze:

# redis-cli ping
PONG

Ale zdalnie mam problemy:

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

W config mam standardowy port:

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

Więc może powinienem otworzyć port 6379 na zdalnym komputerze Ubuntu? Jak mam to zrobić?


redis nie nasłuchuje na zdalnym komputerze?
Sergio Tulentsev

może, jak to sprawdzić
Maxim Yefremov

Czy wyłączyłeś ufw?
insign

Odpowiedzi:


214

Czy ustawiłeś opcję bind, aby umożliwić zdalny dostęp na serwerze redis?

Przed (plik /etc/redis/redis.conf)

bind 127.0.0.1

Po

bind 0.0.0.0

i uruchom, sudo service redis-server restartaby zrestartować serwer. Jeśli to nie jest problem, możesz sprawdzić zapory, które mogą blokować dostęp.

Ważne: jeśli nie używasz zapory (iptables, ufw ..) do kontrolowania, kto łączy się z używanym portem, KAŻDY może połączyć się z tą instancją Redis. Bez korzystania z RedisAUTH oznacza to, że każdy może uzyskać dostęp / zmienić / usunąć Twoje dane. Bądź bezpieczny!


2
w pliku konfiguracyjnym dodałem ciąg bind 0.0.0.0po napisie bind 127.0.0.1. Zrestartowano redis. A teraz może łączyć się zdalnie.
Maxim Yefremov

Czy jest jakaś różnica, jeśli użyjemy bind 0.0.0.0samotnie vsbind 127.0.0.1 0.0.0.0
Nyxynyx

1
@Nyxynyx 0.0.0.0 wiąże się ze wszystkimi adapterami, więc jest to niepotrzebne. Nie powinno to jednak robić różnicy.
MildlySerious

1
Czy otwieranie redis dla jakichkolwiek wywołań IP jest bezpieczne? Jak możemy ograniczyć dostęp do redis tylko z niektórych adresów IP?
brsbilgic

1
@MildlySerious wielkie dzięki. Zmarnowaliśmy prawie 2 tygodnie, zastanawiając się, czy zapora ogniowa, sieć lub inny problem. Ale ta zmiana zadziałała jak mistrz.
kinnu

23

W moim przypadku musiałem wykonać następujące czynności:

1- Komentarz bind 127.0.0.1

2- Zmień protected-modenano

3- Chroń mój serwer za pomocą iptables( https://www.digitalocean.com/community/tutorials/how-to-implement-a-basic-firewall-template-with-iptables-on-ubuntu-14-04 )


1
Musiałem użyć bind 0.0.0.0. „bind 127.0.0.1” nie działa dla mnie. Nie musiałem ustawiać „trybu chronionego” na „nie”. Ostrzeżenie: nie zostawiaj pustego miejsca przed "bind", bo serwer się nie uruchomi. Uwaga: używam portu Windows Redis
Josh

7

Krótka uwaga, że ​​zrobienie tego bez dalszego zabezpieczania serwera Redis nie jest dobrym pomysłem, ponieważ może wystawić cię na atak. Pamiętaj, aby również zaimplementować AUTH lub w inny sposób to zabezpieczyć. Szczegółowe informacje można znaleźć pod adresem http://redis.io/topics/security .


3

1- Komentarz w powiązaniu 127.0.0.1

2- ustaw requirepass yourpassword

następnie sprawdź, czy firewall zablokował twój port

iptables -L -n

usługa iptables zatrzymuje się


3
  1. Otwórz $ REDIS_HOME / redis.conf, odkomentuj requirepass -YOUR-PASSWORD-HERE-i zapisz swoje hasło w określonych wierszach.

  2. Zaloguj się do redis za pomocą redis-cli i zweryfikuj swoje hasło w bazie danych za pomocą auth -YOUR-PASSWORD-HERE-polecenia.

  3. Wyłącz tryb chroniony, zmieniając jego ciąg w $ REDIS_HOME / redis.conf na protected-mode no.

  4. Wyszukaj wszystkie wartości portów wiązania i skomentuj je wszystkie. Po prostu dodaj bind 0.0.0.0do pliku $ REDIS_HOME / redis.conf.

  5. Wyłącz zaporę lub otwórz port Redis.

  6. Zacznij redis za pomocą ./redis-server $REDIS_HOME/redis.conf.

  7. Sprawdź konfigurację za pomocą ./redis-cli -h -YOUR-IP- -a -YOUR-PASSWORD-HERE-.

  8. Sprawdź konfigurację za pomocą ./redis-cli -h -YOUR-IP- ping.

9
Nigdy nie udzielaj rady „Wyłącz zaporę sieciową”.
Samantha Atkins

3
  1. Otwórz plik w lokalizacji /etc/redis.conf

  2. Skomentować bind 127.0.0.1

  3. Uruchom ponownie Redis:

     sudo systemctl start redis.service
    
  4. Wyłącz Firewalld:

     systemctl disable firewalld
    
  5. Zatrzymaj Firewalld:

     systemctl stop firewalld
    

Więc spróbuj:

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

1

Krótka uwaga, że ​​jeśli używasz instancji AWS ec2, jest jeszcze jeden dodatkowy krok, który moim zdaniem jest również obowiązkowy. Przegapiłem krok 3 i zajęło mi cały dzień wymyślenie dodania reguły ruchu przychodzącego do grupy bezpieczeństwa

Krok 1 (jak poprzednio): w zmianie redis.conf powiąż 127.0.0.1 z bind 0.0.0.0

Krok 2 (jak poprzednio): w swoim redis.conf zmień tryb chroniony tak na tryb chroniony nie

ważne dla instancji Amazon Ec2:

Krok 3: Na obecnym komputerze ec2 przejdź do grupy bezpieczeństwa. dodaj regułę przychodzącą dla niestandardowego TCP z portem 6379 i wybierz opcję „używaj z dowolnego miejsca”.


1

W moim przypadku używam redis-stable

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

Otwórz plik redis.conf

vim redis.conf

Zmień bind 127.0.0.1nabind 0.0.0.0

zmień protected-mode yesna protected-mode no

Zrestartuj serwer redis:

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

0

Wiązanie i tryb chroniony są podstawowymi krokami. Ale jeśli ufw jest włączony, będziesz musiał zezwolić na port redis w ufw.

  1. Sprawdź status ufw,ufw status jeśli Status: activenastępnie zezwól na redis-portufw allow 6379
  2. vi /etc/redis/redis.conf
  3. Zmień bind 127.0.0.1nabind 0.0.0.0
  4. zmień protected-mode yesnaprotected-mode no
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.