私は数日間Redisへのリモート接続に苦労していました。やっとできました。接続するために従うために私がまとめた完全なチェックリストは次のとおりです。いくつかの解決策が上記の回答に示されています。それでも私は自分の答えが主題に関するナノwikiであることを望みました:)いくつかの有用なリンクも追加しました。
redisがローカルで動作する場合:
$ redis-cli
127.0.0.1:6379>ping
PONG
127.0.0.1:6379>
パスワードが設定されていない場合
/etc/redis/redis.conf
configを参照してください(これはUbuntu 18.04のデフォルトの場所です。別の場所にある場合があります)。
# The following line should be commented
# requirepass <some pass if any>
保護モードが構成で「いいえ」に設定されている場合:
# The following line should be uncommented
protected-mode no
構成でインターネットからのアクセス用にIPバインディングが開いている場合:
# The following line should be commented
# bind 127.0.0.1 ::1
Linuxファイアウォールで接続が許可されている場合
(ここではUbuntu 18.04です)受信インターネットトラフィックがポート6379
(Redisのデフォルトポート)に移動できることを確認します
# To check if it the port is open
$ sudo ufw status
Status: active
To Action From
-- ------ ----
...
6379/tcp ALLOW Anywhere
6379/tcp (v6) ALLOW Anywhere (v6)
...
# To open the port
$ sudo ufw allow 6379/tcp
Redisサービスを再起動します
変更を有効にするには、Redisサービスを再起動して実行していることを確認してください。
$ sudo systemctl restart redis.service
$ sudo systemctl status redis
リモートサーバーとして機能するかどうかを確認する
コマンドラインから、redis-cli
Redisサーバーがリモートサーバーにあるかのように使用します。
$ redis-cli -h <your-server-ip>
<your-server-ip>:6379> ping
PONG
<your-server-ip>:6379> exit
$
リモートサーバーとして接続されているインターネットサーバー経由でRedisサーバーにping-PONGできる場合、リモートRedis接続は機能しません。
セキュリティ警告
上記のすべてにより、Redisデータはインターネットから誰でも完全にオープンになります。
Redisの構成requirepass
とprotected-mode yes
設定(上記を参照)を基本的に保護し、危険なRedisコマンド(上記のリンクを参照)をブロックするには、この記事とRedisサイトのセキュリティセクションをご覧ください。
役立つリンク
ヘルプへのリンクインストールとUbuntu 18.04上でのRedisを確保する方法やセットアップのUbuntu 18.04ファイアウォールにする方法。
それが役に立てば幸い。
redis-cli -h hostname