Buka port Redis untuk koneksi jarak jauh


118

Saya dapat melakukan ping pong Redis di server:

# redis-cli ping
PONG

Tapi dari jarak jauh, saya mendapat masalah:

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

Di konfigurasi, saya mendapatkan port standar:

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

Jadi mungkin saya harus membuka port 6379 pada mesin Ubuntu jarak jauh? Bagaimana saya melakukannya?


redis tidak mendengarkan di mesin jarak jauh?
Sergio Tulentsev

mungkin, bagaimana memeriksanya
Maxim Yefremov

Sudahkah Anda menonaktifkan ufw?
insign

Jawaban:


214

Apakah Anda menyetel opsi mengikat untuk mengizinkan akses jarak jauh di server redis?

Sebelum (file /etc/redis/redis.conf)

bind 127.0.0.1

Setelah

bind 0.0.0.0

dan jalankan sudo service redis-server restartuntuk me-restart server. Jika bukan itu masalahnya, Anda mungkin ingin memeriksa firewall apa pun yang mungkin memblokir akses.

Penting: Jika Anda tidak menggunakan firewall (iptables, ufw ..) untuk mengontrol siapa yang terhubung ke port yang digunakan, SIAPA PUN dapat terhubung ke instance Redis ini. Tanpa menggunakan Redis 'AUTH itu berarti siapa pun dapat mengakses / mengubah / menghapus data Anda. Berhati-hatilah!


2
di file konfigurasi saya menambahkan string bind 0.0.0.0demi string bind 127.0.0.1. Redis dimulai ulang. Dan sekarang dapat terhubung dari jarak jauh.
Maxim Yefremov

Apakah ada perbedaan jika kami menggunakan bind 0.0.0.0sendiri vsbind 127.0.0.1 0.0.0.0
Nyxynyx

1
@Nyxynyx 0.0.0.0 mengikat ke semua adaptor, jadi tidak perlu. Namun, seharusnya tidak membuat perbedaan.
MildlySerious

1
Apakah aman untuk membuka redis ke panggilan ip apa pun? Bagaimana cara membatasi akses redis hanya dari IP tertentu?
brsbilgic

1
@Serius terima kasih banyak. Kami telah membuang waktu hampir 2 minggu untuk mencari tahu apakah firewall atau jaringan atau beberapa masalah lainnya. Tapi perubahan ini bekerja seperti juara.
kinnu

23

Bagi saya, saya perlu melakukan hal berikut:

1- Beri komentar bind 127.0.0.1

2- Ubah protected-mode keno

3- Lindungi server saya dengan iptables( https://www.digitalocean.com/community/tutorials/how-to-implement-a-basic-firewall-template-with-iptables-on-ubuntu-14-04 )


1
Saya harus menggunakan bind 0.0.0.0. "bind 127.0.0.1" tidak berhasil untuk saya. Saya tidak perlu menyetel "mode-dilindungi" ke "tidak". Peringatan: Jangan biarkan ruang kosong sebelum "bind" atau server tidak akan mulai. Catatan: Saya menggunakan port windows Redis
Josh

7

Catatan singkat bahwa melakukan ini tanpa mengamankan server Redis Anda bukanlah ide yang baik karena dapat membuat Anda terbuka untuk menyerang. Pastikan juga untuk menerapkan AUTH atau mengamankannya. Lihat http://redis.io/topics/security untuk detailnya.


3

1- Komentari bind 127.0.0.1

2- set mengharuskan kata sandi Anda

kemudian periksa apakah firewall memblokir port Anda

iptables -L -n

layanan iptables berhenti


3
  1. Buka $ REDIS_HOME / redis.conf dan hapus komentar requirepass -YOUR-PASSWORD-HERE-dan tulis kata sandi Anda di baris yang ditentukan.

  2. Login ke redis menggunakan redis-cli dan verifikasi kata sandi Anda di database menggunakan auth -YOUR-PASSWORD-HERE-perintah.

  3. Nonaktifkan mode terlindung dengan mengubah stringnya di $ REDIS_HOME / redis.conf menjadi protected-mode no.

  4. Cari semua nilai port bind dan komentari semuanya. Cukup tambahkan bind 0.0.0.0ke file $ REDIS_HOME / redis.conf.

  5. Nonaktifkan firewall Anda atau buka port redis.

  6. Mulai redis menggunakan ./redis-server $REDIS_HOME/redis.conf.

  7. Periksa konfigurasi melalui ./redis-cli -h -YOUR-IP- -a -YOUR-PASSWORD-HERE-.

  8. Periksa konfigurasi melalui ./redis-cli -h -YOUR-IP- ping.

9
Harap jangan pernah memberikan saran "Nonaktifkan firewall Anda".
Samantha Atkins

3
  1. Buka file di lokasi /etc/redis.conf

  2. Beri komentar bind 127.0.0.1

  3. Mulai ulang Redis:

     sudo systemctl start redis.service
    
  4. Nonaktifkan Firewalld:

     systemctl disable firewalld
    
  5. Hentikan Firewalld:

     systemctl stop firewalld
    

Kemudian coba:

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

1

Catatan singkat bahwa jika Anda menggunakan instans AWS ec2 maka ada satu langkah ekstra lagi yang menurut saya juga wajib. Saya melewatkan langkah-3 dan butuh waktu seharian penuh untuk memikirkan cara menambahkan aturan masuk ke grup keamanan

Langkah 1 (seperti sebelumnya): di redis.conf, ubah bind 127.0.0.1 menjadi bind 0.0.0.0

Langkah2 (seperti sebelumnya): di redis.conf Anda, ubah mode dilindungi ya ke mode dilindungi no

penting untuk Instans Amazon Ec2:

Langkah3: Di mesin ec2 Anda saat ini, masuk ke grup keamanan. tambahkan aturan masuk untuk TCP khusus dengan port 6379 dan pilih opsi "gunakan dari mana saja".


1

Dalam kasus saya, saya menggunakan redis-stable

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

Buka redis.conf

vim redis.conf

Ubah bind 127.0.0.1menjadibind 0.0.0.0

ubah protected-mode yesmenjadi protected-mode no

Mulai ulang server redis:

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

0

Bind & protected-mode keduanya adalah langkah penting. Tetapi jika ufw diaktifkan maka Anda harus membuat port redis memungkinkan di ufw.

  1. Periksa status ufwufw status jika Status: activekemudian izinkan redis-portufw allow 6379
  2. vi /etc/redis/redis.conf
  3. Ubah bind 127.0.0.1menjadibind 0.0.0.0
  4. ubah protected-mode yesmenjadiprotected-mode no
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.