1. 程式人生 > >Redis連接出現Error: Connection reset by peer的問題是由於使用Redis的安全模式

Redis連接出現Error: Connection reset by peer的問題是由於使用Redis的安全模式

現在網上一查出現安全模式的連線,基本都是要關閉服務端的操作,其實這種方式是不正確的,最有效的解決方式是使用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://docs.azure.cn/zh-cn/articles/azure-operations-guide/redis-cache/aog-redis-cache-using-redis-cli-connect-azure-redis-cache

https://help.compose.com/docs/redis-and-redis-cli

https://aws.amazon.com/cn/premiumsupport/knowledge-center/elasticache-connect-redis-node/