问题定位
执行命令
$ telnet 127.0.0.1
报错
Trying 127.0.0.1...
telnet: Unable to connect to remote host: Connection refused
错误原因
能够执行telnet命令并不代表系统中安装了telnet服务。
由于是远程连接本地,所以本地需要有telnet服务才能进行连接。
输入命令
$ netstat -tnl
查看端口状态
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN
tcp6 0 0 :::22 :::* LISTEN
tcp6 0 0 ::1:631 :::* LISTEN
可以看到没有进程在监听本地的23端口,说明本地的telnet服务没有启动。
解决方法
1、安装xinetd和telnetd
$ sudo apt-get install xinetd telnetd
2、创建文件/etc/inetd.conf
$ sudo vi /etc/inetd.conf
并加入以下一行
telnet stream tcp nowait telnetd /usr/sbin/tcpd /usr/sbin/in.telnetd
3、修改文件/etc/xinetd.conf
$ sudo vi /etc/xinetd.conf
并修改为以下内容
# Simple configuration file for xinetd
#
# Some defaults, and include /etc/xinetd.d/
defaults
{
# Please note that you need a log_type line to be able to use log_on_success
# and log_on_failure. The default is the following :
# log_type = SYSLOG daemon info
instances = 60
log_type = SYSLOG authpriv
log_on_success = HOST PID
log_on_failure = HOST
cps = 25 30
}
includedir /etc/xinetd.d
4、创建文件/etc/xinetd.d/telnet
$ sudo vi /etc/xinetd.d/telnet
并输入以下内容
# default: on
# description: The telnet server serves telnet sessions; it uses \
# unencrypted username/password pairs for authentication.
service telnet
{
disable = no
flags = REUSE
socket_type = stream
wait = no
user = root
server = /usr/sbin/in.telnetd
log_on_failure += USERID
}
5、重启系统,查看端口状态
$ netstat -tnl
可以看到正在监听23端口
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 127.0.1.1:53 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:23 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN
tcp6 0 0 ::1:631 :::* LISTEN
6、最后测试远程登录本地
$ telnet 127.0.0.1