リモート接続用にRedisポートを開く


118

サーバーでピンポンRedisにpingを実行できます。

# redis-cli ping
PONG

しかし、リモートで、問題が発生しました:

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

設定では、標準ポートを取得しました:

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

それで、リモートのUbuntuマシンでポート6379を開くべきでしょうか?どうすればいいのですか?


redisはリモートマシンでリッスンしていませんか?
Sergio Tulentsev 2013

多分、それをチェックする方法
Maxim Yefremov

ufwを無効にしましたか?
2018

回答:


214

bindオプションを設定して、redisサーバーでのリモートアクセスを許可しましたか?

前(ファイル/etc/redis/redis.conf

bind 127.0.0.1

bind 0.0.0.0

を実行sudo service redis-server restartしてサーバーを再起動します。それが問題でない場合は、アクセスをブロックしている可能性のあるファイアウォールを確認することをお勧めします。

重要:ファイアウォール(iptables、ufw ..)を使用して、使用中のポートに接続するユーザーを制御しない場合、誰でもこのRedisインスタンスに接続できます。RedisAUTHを使用しなくても、誰でもデータにアクセス/変更/削除できます。安全に!


2
設定ファイルでstringのbind 0.0.0.0後にstring を追加しましたbind 127.0.0.1。redisを再起動しました。そして今、リモートで接続することができます。
Maxim Yefremov 2013

bind 0.0.0.0単独で使用する場合と何か違いはありますかbind 127.0.0.1 0.0.0.0
Nyxynyx

1
@Nyxynyx 0.0.0.0はすべてのアダプタにバインドするため、不要です。ただし、違いはありません。
MildlySerious 2014年

1
IP呼び出しに対してredisを開くことは安全ですか?特定のIPからのみredisへのアクセスを制限するにはどうすればよいですか?
brsbilgic

1
@MildlySeriousありがとうございます。ファイアウォールかネットワークか、その他の問題かどうかを判断するのに、ほぼ2週間も無駄になりました。しかし、この変更は大胆に機能しました。
キンヌ

23

私にとって、私は次のことをする必要がありました:

1-コメントアウト bind 127.0.0.1

2-変更protected-modeしますno

3- iptableshttps://www.digitalocean.com/community/tutorials/how-to-implement-a-basic-firewall-template-with-iptables-on-ubuntu-14-04)でサーバーを保護します


1
bind 0.0.0.0を使用する必要がありました。「bind 127.0.0.1」が機能しませんでした。「protected-mode」を「no」に設定する必要はありませんでした。警告:「バインド」する前に空のスペースを残さないでください。そうしないと、サーバーが起動しません。注:私はRedisの窓のポートを使用しています
ジョシュ・

7

Redisサーバーをさらに保護せずにこれを行うことは、攻撃にさらされる可能性があるため、良い考えではありません。AUTHを実装するか、そうでなければそれを保護してください。詳細については、http://redis.io/topics/securityを参照してください。


3

1-バインド127.0.0.1をコメント化

2- requirepass yourpasswordを設定します

次に、ファイアウォールがポートをブロックしているかどうかを確認します

iptables -L -n

サービスiptables停止


3
  1. $ REDIS_HOME / redis.confを開き、コメントrequirepass -YOUR-PASSWORD-HERE-を外して、指定した行にパスワードを書き留めます。

  2. redis-cliを使用してredisにログインし、auth -YOUR-PASSWORD-HERE-コマンドを使用してデータベース内のパスワードを確認します。

  3. $ REDIS_HOME / redis.confの文字列をに変更して、保護モードを無効にしprotected-mode noます。

  4. すべてのバインドポート値を検索し、それらすべてにコメントを付けます。bind 0.0.0.0$ REDIS_HOME / redis.confファイルに追加するだけです。

  5. ファイアウォールを無効にするか、redisポートを開きます。

  6. を使用してredisを開始し./redis-server $REDIS_HOME/redis.confます。

  7. を介して構成を確認します./redis-cli -h -YOUR-IP- -a -YOUR-PASSWORD-HERE-

  8. を介して構成を確認します./redis-cli -h -YOUR-IP- ping

9
「ファイアウォールを無効にする」というアドバイスは絶対にしないでください。
サマンサアトキンス

3
  1. 場所でファイルを開く /etc/redis.conf

  2. コメントアウト bind 127.0.0.1

  3. Redisを再起動します。

     sudo systemctl start redis.service
    
  4. Firewalldを無効にする:

     systemctl disable firewalld
    
  5. Firewalldを停止します。

     systemctl stop firewalld
    

次に試してください:

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

1

AWS ec2インスタンスを使用している場合は、もう1つ余分なステップが必要であり、これも必須であると思います。ステップ3を逃し、インバウンドルールをセキュリティグループに追加するのに丸一日かかりました

ステップ1(前述のとおり):redis.confでbind 127.0.0.1をバインドして0.0.0.0にバインドします

ステップ2(前述のとおり):redis.confで、protected-mode yesをprotected-mode noに変更します。

Amazon Ec2インスタンスにとって重要:

ステップ3:現在のec2マシンで、セキュリティグループに移動します。6379ポートのカスタムTCPのインバウンドルールを追加し、[どこからでも使用]オプションを選択します。


1

私の場合、redis-stableを使用しています

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

redis.confを開きます

vim redis.conf

変更 bind 127.0.0.1bind 0.0.0.0

変更 protected-mode yesには protected-mode no

redis-serverを再起動します。

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

0

バインドと保護モードはどちらも必須の手順です。しかしufwが有効になっている場合は、ufwでredisポートを許可する必要があります。

  1. redis-portを許可する場合はufwステータスを確認しますufw statusStatus: activeufw allow 6379
  2. vi /etc/redis/redis.conf
  3. 変更bind 127.0.0.1bind 0.0.0.0
  4. 変更するprotected-mode yesにはprotected-mode no
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.