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

相关推荐
hinewcc8 分钟前
Linux电源管理 - wakelocks
android·linux
qq_2290580128 分钟前
Docker常用命令
linux·服务器·docker
Vect__30 分钟前
基于抢票系统的线程互斥详解
linux
是个西兰花32 分钟前
进程间通信:匿名管道
linux·运维·服务器
爱吃泡芙的小白白33 分钟前
使用Cursor来进行连接SSH远程主机中出现的问题(自用)
服务器·学习·ssh·cursor
小北方城市网34 分钟前
Spring Cloud Gateway 生产级微内核架构设计与可插拔过滤器开发
java·大数据·linux·运维·spring boot·redis·分布式
wacpguo35 分钟前
Ubuntu 24.04 安装 Docker
linux·ubuntu·docker
Lenyiin1 小时前
Linux 进程控制
linux·运维·服务器
春日见1 小时前
Git 相关操作大全
linux·人工智能·驱动开发·git·算法·机器学习
述清-架构师之路1 小时前
vmWare的CentOS系统网路连不上处理记录
linux·运维·centos