解決:連線遠端redis服務失敗(在linux部署)
問題描述:
我在遠端linux上部署了redis服務並在linux本地連線成功,但是在遠端windows上用Jedis(或redis客戶端)連線失敗。
程式碼如下:
public static void main(String[] args) {
Jedis jedis = new Jedis("192.168.*.*", 6379);
System.out.println(jedis.ping());
}
錯誤日誌如下(*是為了隱藏真實資訊)
Exception in thread "main" redis.clients.jedis.exceptions.JedisConnectionException: Failed connecting to host 192.168.*.*:6379
at redis.clients.jedis.Connection.connect(Connection.java:204)
at redis.clients.jedis.BinaryClient.connect(BinaryClient.java:100)
at redis.clients.jedis.Connection.sendCommand(Connection.java:125)
at redis.clients.jedis.Connection.sendCommand(Connection.java:120)
at redis.clients.jedis.BinaryClient.ping(BinaryClient.java:113)
at redis.clients.jedis.BinaryJedis.ping(BinaryJedis.java:188)
at com.term.TestPing.main(TestPing.java:8)
Caused by: java.net.SocketTimeoutException: connect timed out
at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method)
at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:85)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:589)
at redis.clients.jedis.Connection.connect(Connection.java:181)
... 6 more
排錯
- 確定redis啟動成功
[root@localhost bin]# ps -ef|grep redis
root 3257 1 0 10:31 ? 00:00:00 redis-server 127.0.0.1:6379
root 3321 3161 0 10:32 pts/0 00:00:00 grep --color=auto redis
- 確定6379埠號向外開放
[root@localhost bin]# firewall-cmd --list-ports
8080/tcp 9090/tcp 8848/tcp 6379/tcp
- 確定能夠ping通遠端ip
PS C:\Users\Termlis> ping 192.168.*.*
正在 Ping 192.168.31.150 具有 32 位元組的資料:
來自 192.168.31.150 的回覆: 位元組=32 時間<1ms TTL=64
來自 192.168.31.150 的回覆: 位元組=32 時間<1ms TTL=64
來自 192.168.31.150 的回覆: 位元組=32 時間<1ms TTL=64
來自 192.168.31.150 的回覆: 位元組=32 時間<1ms TTL=64
192.168.31.150 的 Ping 統計資訊:
資料包: 已傳送 = 4,已接收 = 4,丟失 = 0 (0% 丟失),
往返行程的估計時間(以毫秒為單位):
最短 = 0ms,最長 = 0ms,平均 = 0ms
通過排錯發現ip能夠ping通,埠號也是開放的,redis服務也正常執行中。(如果有人排錯結果跟我不一樣,請解決上述問題,保證以上三個條件)
但是可以看到在我們檢視redis程式的時候他指定了127.0.0.1本地訪問!
(00:00:00 redis-server 127.0.0.1:6379)
檢視redis.conf(vim命令)
發現如下配置及註釋:
# IF YOU ARE SURE YOU WANT YOUR INSTANCE TO LISTEN TO ALL THE INTERFACES
# JUST COMMENT OUT THE FOLLOWING LINE.
# 意識就是如果你想遠端訪問,請註釋下一行配置
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
bind 127.0.0.1
# Protected mode is a layer of security protection, in order to avoid that
# Redis instances left open on the internet are accessed and exploited.
#
# When protected mode is on and if:
#
# 1) The server is not binding explicitly to a set of addresses using the
# "bind" directive.
# 2) No password is configured.
#
# The server only accepts connections from clients connecting from the
# IPv4 and IPv6 loopback addresses 127.0.0.1 and ::1, and from Unix domain
# sockets.
#
# By default protected mode is enabled. You should disable it only if
# you are sure you want clients from other hosts to connect to Redis
# even if no authentication is configured, nor a specific set of interfaces
# are explicitly listed using the "bind" directive.
# 上面一大堆,反正就是說開啟了protected-mode就不能遠端訪問,我們得把它關上。
protected-mode yes
根據上面註釋的內容,我們想要遠端訪問redis服務,需要將bind 127.0.0.1配置註釋。
然後將protected-mode yes設定為no
- 註釋bind 127.0.0.1
- protected-mode yes設定為no
- 儲存並退出
重啟Redis再次測試
linux本地連線成功
127.0.0.1:6379> ping
PONG
遠端jedis連線成功:
//java 程式執行結果
PONG
Process finished with exit code 0
Is over!
相關文章
- 遠端連線 Mysql 失敗的解決方法MySql
- 遠端主機mysql連線失敗MySql
- VSCode 遠端連線失敗VSCode
- 資料庫遠端連線失敗資料庫
- 關於 SQLyog 遠端連線 Linux 系統的 MySQL 失敗的解決方法LinuxMySql
- linux配置mysql資料庫遠端連線失敗LinuxMySql資料庫
- 解決 Linux 下 SSH 遠端連線服務卡慢的全過程Linux
- Windows遠端連線Docker服務WindowsDocker
- Linux下安裝redis資料庫服務,並開啟遠端連線LinuxRedis資料庫
- Dell伺服器遠端卡java連線失敗伺服器Java
- 在新裝Homestead環境下,Redis連線失敗的解決辦法。Redis
- linux安裝redis和遠端連線LinuxRedis
- [SSH服務]——SSH詳解、常用的遠端連線工具
- 遠端桌面連線失敗 批次管理雲伺服器伺服器
- Win7無法建立遠端連線管理服務的解決方法Win7
- jconsole連線遠端服務
- mysql遠端連結失敗筆記MySql筆記
- 解決使用SSH連線Linux伺服器時連線失敗的故障Linux伺服器
- CF連線伺服器失敗怎麼回事 cf連線失敗解決辦法伺服器
- windows10系統下遠端桌面連線失敗客戶端無法建立與遠端計算機的連線如何解決Windows客戶端計算機
- win10連線遠端桌面失敗提示“出現身份驗證錯誤”怎麼解決Win10
- MQ服務啟動失敗的解決方法MQ
- Windows遠端桌面連線失敗和無法複製貼上Windows
- 在容器外部連線kafka失敗Kafka
- win10 如何開啟遠端服務_win10如何開啟遠端連線服務Win10
- vnc遠端連線linux,vnc遠端連線linux的具體方法。VNCLinux
- vnc遠端連線linux,vnc遠端連線linux的具體操作VNCLinux
- Linux 連線遠端桌面Linux
- 遠端連線Kali Linux使用PuTTY實現SSH遠端連線Linux
- 使用免費的Oracle雲服務-遠端連線ATPOracle
- MongoVUE 連線失敗GoVue
- windows 系統,遠端桌面連線超出連線數解決方法Windows
- 無界滑鼠MOUSE WITHOUT BORDERS連線失敗解決方法
- 資料庫連線失敗的原因及解決方法資料庫
- zblog應用中心連線失敗的解決方案
- mysql遠端連線不上怎麼解決?MySql
- 無法遠端連線mysql怎麼解決MySql
- 解決mysql不能遠端連線的問題MySql