前言
今天在安裝 arthas 的時候,啟動jar包時,抛了如下異常:
Connect to telnet server error: 127.0.0.1 3658
java.net.ConnectException: Connection refused
at java.net.PlainSocketImpl.socketConnect(Native Method)
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.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:589)
at org.apache.commons.net.SocketClient.connect(SocketClient.java:188)
at org.apache.commons.net.SocketClient.connect(SocketClient.java:209)
at com.taobao.arthas.client.TelnetConsole.process(TelnetConsole.java:309)
at com.taobao.arthas.client.TelnetConsole.main(TelnetConsole.java:166)
Usage: arthas-client [--help] [-c <value>] [-f <value>] [-t <value>] [-w
<value>] [-h <value>] [target-ip] [port]
Arthas Telnet Client
EXAMPLES:
java -jar arthas-client.jar 127.0.0.1 3658
java -jar arthas-client.jar -c 'dashboard -n 1'
java -jar arthas-client.jar -f batch.as 127.0.0.1
處理思路
- 下面我們來排查一下問題,我們先看一下防火牆的狀态,如果是開啟的話,需要關閉一下防火牆
# 檢視防火牆狀态 systemctl status firewalld
- 輸入檢測telnet和telnet-server的rpm包是否安裝 ,如果沒有傳回任何結果資訊,則表示沒有安裝
rpm -qa telnet rpm -qa telnet-server
提示:出于安全考慮telnet-server.rpm是預設沒有安裝的,而telnet的用戶端是标配。
- 如果未安裝,則輸入如下指令安裝telnet和telnet-server
# telnet伺服器 yum install telnet # telnet用戶端 yum install telnet-server # xinetd守護程序 yum install xinetd
- 安裝完成用rpm -qa telnet 進行檢視結果
rpm -qa telnet 傳回: telnet-0.17-47.el6_3.1.x86_64
- 上方都安裝成功之後,則由于telnet服務是由xinetd守護的,是以我們需要重新啟動xinetd
service xinetd restart
報錯Redirecting to /bin/systemctl restart xinetd.service
如果啟動xinetd失敗,則繼續往下看,如果是成功的,可以跳過這裡。
- 首先,檢查伺服器已安裝的tftp-server,如果存在已安裝的tftp這裡會列出來
rpm -qa | grep tftp-server
- 安裝tftp-server 和 xinetd
yum -y install tftp-server yum -y install xinetd
- 修改tftp配置檔案,vi /etc/xinetd.d/tftp 打開配置檔案
service tftp { socket_type = dgram protocol = udp wait = yes user = root server = /usr/sbin/in.tftpd server_args = -s /var/lib/tftpboot disable = no //需要修改的地方,初始時刻為yes per_source = 11 cps = 100 2 flags = IPv4 }
- 重起服務,使用如下指令進行服務的重新啟動
/bin/systemctl restart xinetd.service $/bin/systemctl enable xinetd.service //開啟服務 $/bin/systemctl start xinetd.service //啟動服務 檢視服務啟動狀況 $ps aux | grep xinetd 或者 $ps -ef|grep xinetd 或者 ps -a | grep tftp
檢視xinetd啟動狀态
xinetd啟動成功,可以檢視xinetd的運作情況,檢視23端口是否存在,存在即成功
netstat -tnlp
可以看到啟動成功了~
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsICM38FdsYkRGZkRG9lcvx2bjxiNx8VZ6l2cs0TPB90dBRlTycmeNBDOsJGcohVYsR2MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnLxUWYlR2NzImNlVWZjJTYiJTZxQjZmJGZjRGOzYTY3IzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)