Linux(RedHat或CentOS)下如何开启telnet服务

一、Telnet服务介绍

Telnet协议是TCP/IP协议族中的一员,是Internet远程登录服务的标准协议和主要方式。它为用户提供了在本地计算机上完成远程主机工作的能力。在终端使用者的电脑上使用telnet程序,用它连接到服务器。终端使用者可以在telnet程序中输入命令,这些命令会在服务器上运行,就像直接在服务器的控制台上输入一样。可以在本地就能控制服务器。要开始一个telnet会话,必须输入用户名和密码来登录服务器。Telnet是常用的远程控制Web服务器的方法。

二、开启Telnet服务的安全隐患

虽然Telnet较为简单实用也很方便,但是在格外注重安全的现代网络技术中,Telnet并不被重用。原因在于Telnet是一个明文传送协议,它将用户的所有内容,包括用户名和密码都明文在互联网上传送,具有一定的安全隐患,因此许多服务器都会选择禁用Telnet服务。如果我们要使用Telnet的远程登录,使用前应在远端服务器上检查并设置允许Telnet服务的功能。

参考文献:Telnet_百度百科 (baidu.com)

三、开始Telnet服务操作方法

如果确实想用Telnet来连接服务的话,首先需要在服务器上确定是否安装了telnet-server和xinetd(telnete服务需要依赖它来完成)。

3.1、检查服务端telnet情况

bash 复制代码
[root@app ~]# rpm -qa|grep telnet-server
[root@app ~]# rpm -qa|grep xinetd

执行完以上命令,如果没有输出内容说明没有安装telnet-server和xinetd。

3.2、安装telnet-server和xinet

telnet-server和xinet一般都在操作系统的镜像中,可以先检查一下,主机上是否配置好了镜像源或是yum源。

bash 复制代码
[root@app ~]# cd /etc/yum.repos.d/
[root@app yum.repos.d]# ls
CentOS76.repo  repo
[root@app yum.repos.d]# cat CentOS76.repo 
[CentOS7.6_x64]
name=CentOS7.6_x64.iso
baseurl=file:///mnt/iso
enabled=1
gpgcheck=0
[root@app yum.repos.d]# 

以上操作是对yum源的配置,如果在安装过程中有其它的依赖包的话,可以通过yum源的配置摆脱依赖包的烦恼。

3.3、检查yum源中的telnet-server和xinetd安装文件是否存在

3.3.1、检查telnet-server和xinetd
bash 复制代码
[root@app yum.repos.d]# yum list telnet-server
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
可安装的软件包
telnet-server.x86_64               1:0.17-64.el7          CentOS7.6_x64 
[root@app yum.repos.d]# yum list xinetd
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
可安装的软件包
xinetd.x86_64                      2:2.3.15-13.el7        CentOS7.6_x64                                                   

出现以上结果,说明操作系统的镜像中存在telnet-server和xinetd安装文件,接下来就可以使用yum命令进行安装了。

3.4、安装telnet-server和xinetd

安装telnet-server:

bash 复制代码
[root@app yum.repos.d]# yum install -y telnet-server
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
正在解决依赖关系
--> 正在检查事务
---> 软件包 telnet-server.x86_64.1.0.17-64.el7 将被 安装
--> 解决依赖关系完成

依赖关系解决

=================================================================================================================================================================
 Package                                 架构                             版本                                     源                                       大小
=================================================================================================================================================================
正在安装:
 telnet-server                           x86_64                           1:0.17-64.el7                            CentOS7.6_x64                            41 k

事务概要
=================================================================================================================================================================
安装  1 软件包

总下载量:41 k
安装大小:55 k
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  正在安装    : 1:telnet-server-0.17-64.el7.x86_64                                                                                                           1/1 
  验证中      : 1:telnet-server-0.17-64.el7.x86_64                                                                                                           1/1 

已安装:
  telnet-server.x86_64 1:0.17-64.el7                                                                                                                             

完毕!
[root@app yum.repos.d]# 

安装xinetd:

bash 复制代码
[root@app yum.repos.d]# yum install -y xinetd
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
正在解决依赖关系
--> 正在检查事务
---> 软件包 xinetd.x86_64.2.2.3.15-13.el7 将被 安装
--> 解决依赖关系完成

依赖关系解决

=================================================================================================================================================================
 Package                           架构                              版本                                         源                                        大小
=================================================================================================================================================================
正在安装:
 xinetd                            x86_64                            2:2.3.15-13.el7                              CentOS7.6_x64                            128 k

事务概要
=================================================================================================================================================================
安装  1 软件包

总下载量:128 k
安装大小:261 k
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  正在安装    : 2:xinetd-2.3.15-13.el7.x86_64                                                                                                                1/1 
  验证中      : 2:xinetd-2.3.15-13.el7.x86_64                                                                                                                1/1 

已安装:
  xinetd.x86_64 2:2.3.15-13.el7                                                                                                                                  

完毕!
[root@app yum.repos.d]# 
3.4.1、检查telnet-server和xinetd是否安装成功
bash 复制代码
[root@app yum.repos.d]# rpm -qa|grep telnet-server
telnet-server-0.17-64.el7.x86_64
[root@app yum.repos.d]# rpm -qa|grep xinetd
xinetd-2.3.15-13.el7.x86_64

出现以上结果,说明telnet-server和xinetd已安装成功。

3.4.2、安装telnet客户端

这一步可以不用操作,安装telnet客户端主要的作用,是为了测试telnet服务是否可以正常使用,大家也可以用windows的telnet客户端进行测试,或是ssh终端工具进行测试。

bash 复制代码
[root@app xinetd.d]# yum install -y telnet
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
正在解决依赖关系
--> 正在检查事务
---> 软件包 telnet.x86_64.1.0.17-64.el7 将被 安装
--> 解决依赖关系完成

依赖关系解决

=================================================================================================================================================================
 Package                            架构                               版本                                      源                                         大小
=================================================================================================================================================================
正在安装:
 telnet                             x86_64                             1:0.17-64.el7                             CentOS7.6_x64                              64 k

事务概要
=================================================================================================================================================================
安装  1 软件包

总下载量:64 k
安装大小:113 k
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  正在安装    : 1:telnet-0.17-64.el7.x86_64                                                                                                                  1/1 
  验证中      : 1:telnet-0.17-64.el7.x86_64                                                                                                                  1/1 

已安装:
  telnet.x86_64 1:0.17-64.el7                                                                                                                                    

完毕!
[root@app xinetd.d]# 
3.4.3、启动telnet-server和xinetd服务

启动telnet-server,并设为开机启动:

bash 复制代码
[root@app xinetd.d]# systemctl start telnet.socket      //启动telnet-server
[root@app xinetd.d]# systemctl status telnet.socket     //查看telnet-server启动状态
● telnet.socket - Telnet Server Activation Socket
   Loaded: loaded (/usr/lib/systemd/system/telnet.socket; enabled; vendor preset: disabled)
   Active: active (listening) since 日 2024-09-08 15:57:46 CST; 15s ago
     Docs: man:telnetd(8)
   Listen: [::]:23 (Stream)
 Accepted: 0; Connected: 0

9月 08 15:57:46 app systemd[1]: Listening on Telnet Server Activation Socket.
[root@app xinetd.d]# systemctl enable telnet.socket     //把telnet-server设为开机启动
[root@app xinetd.d]# systemctl list-unit-files telnet.socket    //查看telnet-server设为开机启动是否成功
UNIT FILE     STATE  
telnet.socket enabled

1 unit files listed.

这里需要注意的是启动telnet-server服务的文件是telnet.socket。有些同学会认为应该是telnet.service这个文件,telnet-server和其它服务不太一样,它是以超级服务进行启动的。

具体介绍大家可以参考一下xinetd的介绍:xinetd_百度百科 (baidu.com)

启动xinetd,并设为开机启动:

bash 复制代码
[root@app xinetd.d]# systemctl start xinetd.service          //启动xinetd服务
[root@app xinetd.d]# systemctl status xinetd.service         //查看xinetd服务启动状态
● xinetd.service - Xinetd A Powerful Replacement For Inetd
   Loaded: loaded (/usr/lib/systemd/system/xinetd.service; enabled; vendor preset: enabled)
   Active: active (running) since 日 2024-09-08 16:03:55 CST; 9s ago
  Process: 22314 ExecStart=/usr/sbin/xinetd -stayalive -pidfile /var/run/xinetd.pid $EXTRAOPTIONS (code=exited, status=0/SUCCESS)
 Main PID: 22315 (xinetd)
    Tasks: 1
   CGroup: /system.slice/xinetd.service
           └─22315 /usr/sbin/xinetd -stayalive -pidfile /var/run/xinetd.pid

9月 08 16:03:55 app xinetd[22315]: removing discard
9月 08 16:03:55 app xinetd[22315]: removing discard
9月 08 16:03:55 app xinetd[22315]: removing echo
9月 08 16:03:55 app xinetd[22315]: removing echo
9月 08 16:03:55 app xinetd[22315]: removing tcpmux
9月 08 16:03:55 app xinetd[22315]: removing time
9月 08 16:03:55 app xinetd[22315]: removing time
9月 08 16:03:55 app xinetd[22315]: xinetd Version 2.3.15 started with libwrap loadavg labeled-networking options compiled in.
9月 08 16:03:55 app xinetd[22315]: Started working: 0 available services
9月 08 16:03:55 app systemd[1]: Started Xinetd A Powerful Replacement For Inetd.
[root@app xinetd.d]# systemctl enable xinetd.service         //把xinetd服务设为开机启动
[root@app xinetd.d]# systemctl list-unit-files xinetd.service    //查看xinetd服务设为开机启动是否成功
UNIT FILE      STATE  
xinetd.service enabled

1 unit files listed.

3.5、telnet-server服务测试

bash 复制代码
[root@app xinetd.d]# telnet 192.168.10.2 23
Trying 192.168.10.2...
Connected to 192.168.10.2.
Escape character is '^]'.

Kernel 3.10.0-957.el7.x86_64 on an x86_64
app login: 

当看到以上连接结果,说明telnet-server和xinetd服务已经正常工作了。下面试着输入用户名和密码看是否能正常连接进入。

bash 复制代码
[root@app xinetd.d]# telnet 192.168.10.2 23
Trying 192.168.10.2...
Connected to 192.168.10.2.
Escape character is '^]'.

Kernel 3.10.0-957.el7.x86_64 on an x86_64
app login: root
Password: 
Login incorrect

app login: 

root用户登录被拒绝登录了。

这是因为telnet-server服务默认情况下,RedHat和CentOS系统是不允许root用户通过telnet的方式远程登陆系统的(这是为了安全起见做的默认设定)。

如果要使用root用户登录系统,需要修改/etc/securetty文件内容,把以下内容添加到该文件的最下方,保存即可。

bash 复制代码
pts/0
pts/1
pts/2
pts/3
pts/4

如下,这里把以上内容添加到 /etc/securetty文件内容的结果:

bash 复制代码
[root@app xinetd.d]# tail -5 /etc/securetty
pts/0
pts/1
pts/2
pts/3
pts/4
[root@app xinetd.d]# 

重启telnet-server和xinetd服务:

bash 复制代码
[root@app xinetd.d]# systemctl restart telnet.socket
[root@app xinetd.d]# systemctl restart xinetd.service

再次尝试连接telnet-server:

bash 复制代码
[root@app xinetd.d]# telnet 192.168.10.2 23
Trying 192.168.10.2...
Connected to 192.168.10.2.
Escape character is '^]'.

Kernel 3.10.0-957.el7.x86_64 on an x86_64
app login: root
Password: 
Last failed login: Sun Sep  8 16:11:58 CST 2024 from ::ffff:192.168.10.2 on pts/2
There was 1 failed login attempt since the last successful login.
Last login: Sun Sep  8 15:23:58 from 192.168.10.1
[root@app ~]# 

输入root用户的密码,已经正常连接进来了。说明telnet-server已经可以正常连接使用了。

大家也可以用ssh终端工具进行测试,以下是使用Xshell工具进行连接的测试。

ssh工具也可以正常连接了。

知识扩展

如果大家使用的是RedHat或CentOS操作系统的版本是7.0以下的,安装完xinetd和telnet-server后,后面的操作稍微有点不一样,7.0以下的版本是通过修改/etc/xinetd.d/telnet配置文件来实现的。如下:

vi /etc/xinetd.d/telnet // 把disable中的yes改成no

service telnet

{

flags = REUSE

socket_type = stream

wait = no

user = root

server = /usr/sbin/in.telnetd

log_on_failure += USERID

disable = yes

}

service telnet

{

flags = REUSE

socket_type = stream

wait = no

user = root

server = /usr/sbin/in.telnetd

log_on_failure += USERID

disable = no

}

/etc/init.d/xinetd reload //重新加载xinetd服务。

其中是否能让root用户登录的方法和3.5小节点中,给/etc/securetty配置文件中添加内容的操作一样,添加完成之后执行 /etc/init.d/xinetd reload,让其重新加载xinetd服务即可。

**注:**以上方法操作都没有问题,但是在连接telnet-server的23端口时,一直连接不上,有可能是主机的防火墙阻止了23端的连接,大家可以把防火墙关闭,或是放开23端即可。

大家可以参照下面方法通过防火墙放开23端口。

RedHat和CentOS 系统版本是7.0的,默认采用 firewalld 防火墙。6.0采用提iptables防火墙,下面分别简单的介绍一下操作方法。

以下是7.0版本的操作方法:

查询防火墙是否开启了 23 端口:

bash 复制代码
[root@app xinetd.d]# firewall-cmd --query-port=23/tcp
no

执行结果为"no" 表示未开启,通过以下命令开启 23 端口:

bash 复制代码
[root@app xinetd.d]# firewall-cmd --zone=public --add-port=23/tcp --permanent    //永久(--permanent)开启23端口
success    //开启成功
[root@app xinetd.d]# firewall-cmd --complete-reload                              // 重载防火墙配置,使变更生效
success    //重载成功
[root@app xinetd.d]# firewall-cmd --query-port=23/tcp                            // 查询开启状态
yes        //开启

或是直接使和以下命令关闭防火墙:

bash 复制代码
[root@app ~]# systemctl stop firewalld.service         //停止防火墙
[root@app ~]# systemctl status firewalld.service       //查看防火墙运行状态
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
   Active: inactive (dead)
     Docs: man:firewalld(1)

9月 08 16:48:18 app systemd[1]: Starting firewalld - dynamic firewall daemon...
9月 08 16:48:18 app systemd[1]: Started firewalld - dynamic firewall daemon.
9月 08 16:48:23 app systemd[1]: Stopping firewalld - dynamic firewall daemon...
9月 08 16:48:24 app systemd[1]: Stopped firewalld - dynamic firewall daemon.
[root@app ~]# systemctl disable firewalld.service       //关闭防火墙开始启动
 

6.0版本的操作如下:

停止防火墙:service iptables stop

查看防火墙状态:service iptables status

禁止开机启动:chkconfig iptables off

查看开机启动状态:chkconfig --list iptables

放开访问端口:iptables -I INPUT -p tcp --dport 23 -j ACCEPT

注: 使用iptables这种方式放开端口的操作,不会写入配置文件 /etc/sysconfig/iptables 中,重启系统会失效(重启防火墙服务也会失效)

可以再执行一次保存命令,将通过命令添加的开放端口保存到配置中:service iptables save

相关推荐
大树8813 小时前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠13 小时前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
bush413 小时前
嵌入式linux学习记录十四、术语
linux·嵌入式
载数而行52013 小时前
Linux 11 动态监控指令top
linux
小宇宙Zz13 小时前
Maven依赖冲突
java·服务器·maven
不会C语言的男孩15 小时前
Linux 系统编程 · 第 8 章:进程基础
linux·c语言
古城小栈15 小时前
Unix 与 Linux 异同小叙
linux·服务器·unix
程序猿阿伟16 小时前
《Chrome离线扩展安装的底层逻辑与场景落地指南》
服务器·网络·chrome
凡人叶枫16 小时前
Effective C++ 条款42:了解 typename 的双重意义
java·linux·服务器·c++
AC赳赳老秦16 小时前
用 OpenClaw 搭建服务器故障应急响应系统,自动处理 80% 常见运维故障
android·运维·服务器·python·rxjava·deepseek·openclaw