Redis連接出現Error: Connection reset by peer的問題是由於使用Redis的安全模式
阿新 • • 發佈:2018-12-17
現在網上一查出現安全模式的連線,基本都是要關閉服務端的操作,其實這種方式是不正確的,最有效的解決方式是使用stunnel進行安全模式的連線。
我碰到的問題是微軟雲(其實我不想用!)連線Redis,預設採用6380做為SSL埠,而微軟雲同時還會啟用非SSL埠6379,如果嫌其麻煩,可以用非SSL進行連線。
下面是解決方法:
1、安裝stunnel,這個工具的原理是可以簡單的看做代理,把遠端請求用stunnel,返回後用本地對映一個埠。
# Mac brew instsall stunnel # CentOS yum install -y stunnel
2、配置
# Mac配置檔案路徑 vi/usr/local/etc/stunnel/stunnel.conf # CentOS配置檔案路徑 vi /etc/stunnel/stunnel.conf
配置如下:
[redis-cli] client = yes accept = 127.0.0.1:6380 connect = <Redis 主機名稱>:6380
執行stunnel
stunnel
3、連線
注意,此時的連線應該為localhost,而不是上面的地址。
redis-cli.exe -p 6380 –a <訪問金鑰>
總結:
其實上面可以看出,要先執行stunnel,然後stunnel代理了遠端的一個連線,並映射出本地埠,其實本地的埠可以寫成別的。
為什麼會有stunnel,原因是以前的一些客戶端本身不支援SSL,尤其是一些證書等等,那麼stuunel很好解決了這一部分客戶端的問題,並通過代理使客戶端無感知。
參考:
https://www.cnblogs.com/adylee/archive/2007/09/16/894538.html
https://help.compose.com/docs/redis-and-redis-cli
https://aws.amazon.com/cn/premiumsupport/knowledge-center/elasticache-connect-redis-node/