Linux 状态命令之网络状态 telnet

简介

telnet 命令用于登录远程主机,是基于 Telnet 协议的远程登录程序,对远程主机进行管理。telnet 因为采用明文传送报文,安全性不好,很多 Linux 服务器都不开放 telnet 服务,而改用更安全的 ssh 方式了。但仍然有很多别的系统可能采用了 telnet 方式来提供远程登录,因此弄清楚 telnet 客户端的使用方式仍是很有必要的。

telnet 命令还可做别的用途,比如确定远程服务器的某个端口是否能访问。

此外,Telnet 协议是 TCP/IP 协议族中的一员,是 Internet 远程登陆服务的标准协议,属于应用层协议,基于 TCP 协议用于实现远程登录。

安装

安装telnet

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 1、检测telnet-server的rpm包是否安装,若无输出内容,则表示没有安装。出于安全考虑telnet-server.rpm是默认没有安装的,而telnet的客户端是标配。即客户端软件是默认安装的。
[fenglepeng@centos]# rpm -qa telnet-server


# 2、若未安装,则安装telnet-server,否则忽略此步骤
[fenglepeng@centos]# yum install telnet-server1


# 3、检测telnet的rpm包是否安装
[fenglepeng@centos]# rpm -qa telnet
telnet-0.17-47.el6_3.1.x86_6412


# 4、若未安装,则安装telnet,否则忽略此步骤
[fenglepeng@centos]# yum install telnet1

安装 xinetd 服务

由于 telnet 服务是由 xinetd 守护的,所以安装完 telnet-server,要启动 telnet 服务就必须重新启动 xinetd。

xinetd 即 extended internet daemon,xinetd 是新一代的网络守护进程服务程序,又叫超级 Internet 服务器。经常用来管理多种轻量级 Internet 服务。telnet 服务就是通过 xinetd 服务来管理的,所以在安装 telnet 服务之前需要先安装 xinetd 服务。

1
2
3
4
5
6
7
8
9
10
# 1、首先查看是否安装xinetd服务
[fenglepeng@centos]# rpm -qa | grep xinetd1


# 2、若没有安装,使用yum命令进行安装
[fenglepeng@centos]# yum install -y xinetd


# 3、安装完成之后就可以启动了
[fenglepeng@centos]#service xinetd restart

注意点及错误的解决

更改配置文件 /etc/xinetd.d/telnet

若此文件不存在,则创建这个文件。将其中 disable=yes 改为 disable=no 或注释掉。即改为如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
# default: on
# description: The telnet server serves telnet sessions; it uses \
# unencrypted username/password pairs for authentication.
service telnet
{
flags = REUSE
socket_type = stream
wait = no
user = root
server = /usr/sbin/in.telnetd
log_on_failure += USERID
#disable = yes 【将disable=yes行前加#注释掉,或者把yes改为no】
}

使用root登录

telnet 默认的情况之下不允许 root 以 telnet 进入 Linux 主机,在普通用户telnet进入系统之后,在切换到root用户就可以使用root用户了。如果非要使用root登录,可以使用修改securetty文件。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
console
vc/1
vc/2
vc/3
vc/4
vc/5
vc/6
vc/7
vc/8
vc/9
vc/10
vc/11
tty1
tty2
tty3
tty4
tty5
tty6
tty7
tty8
tty9
tty10
tty11

# below is added
pts/1
pts/2
pts/3
pts/4
pts/5
pts/6
pts/7
pts/8
pts/9
pts/10
pts/11

增加 pts/1…pts/11

一般不建议直接用 root 用户远程通过 telnet 登陆系统,因为 telnet 在数据传输过程采用明文方式,如果数据包被人截获,将会很容易获取 root 用户的登陆口令;还是建议以普通用户通过 telnet 远程登陆,然后 su 到 root,这样相对比较安全。如果非要用root用户远程连接,建议采用SSH。

修改telnet端口

修改文件/etc/services将文件中

1
2
3
4
...  
telnet 23/tcp
telnet 23/udp
...

修改为

1
2
telnet 8902/tcp  
telnet 8902/udp

重启telnet服务即可。

语法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
netstat [-8EFKLacdfrx] [-X authtype] [-b hostalias] [-e escapechar] [-k realm] [-l user] [-n tracefile] [host [port]]

选项
-8:允许使用8位字符资料,包括输入与输出
-a:尝试自动登入远端系统;
-b <hostalias>:使用别名指定远端主机名称
-c:不读取用户专属目录里的.telnetrc文件
-d:启动排错模式
-e <escapechar>:设置转义字符
-E:滤除转义字符
-f:此参数的效果和指定"-F"参数相同
-F:使用Kerberos V5认证时,加上此参数可把本地主机的认证数据上传到远端主机
-k <realm>:使用Kerberos认证时,加上此参数让远端主机采用指定的域名,而非该主机的域名去获取票据
-K:不自动登入远端主机
-l <user>:指定要登入远端主机的用户名称
-L:允许输出8位字符资料
-n <tracefile>:指定文件记录相关信息
-r:使用类似rlogin指令的用户界面
-x:假设主机有支持数据加密的功能,就使用它
-X <atype>:关闭指定的认证类型。

示例

  1. 登录主机。
    telnet 192.168.0.5

  2. 确认远端服务器某个端口是否可用。比如查看远端服务器ssh服务的22号端口是否开放。

    1
    2
    3
    4
    5
    [fenglepeng@centos7]# telnet 10.234.178.144 22
    Trying 10.234.178.144...
    Connected to 10.234.178.144.
    Escape character is '^]'.
    SSH-2.0-OpenSSH_6.0

Telnet客户端命常用命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
auth <argument> [...]:查看和管理telnet登录身份验证方式。argument可取值:disable、enable和status
close:关闭当前Telnet连接
display:使用 display 命令可以查看 Telnet 客户端的当前设置
logout:类似于cloase命令,用于关闭Telnet连接或者挂起。注:Telnet服务端可能不支持
open <host> [-l user] [[-] port]:建立到指定主机的Telnet连接
send <arguments>:使用send命令可以向Telnet服务器发送特定字符串。支持包括但不限于以下命令字符串:
abort:终止服务命令
ao:Abort Output,放弃输出命令
ayt:Are you there命令
brk:Break命令
eof:发送End Of File字符
escape:发送当前的转义字符,初始为分组符^]。
ip:中断进程命令
synch:执行Telnet同步操作。
quit:退出 Telnet 客户端。
status:显示当前Telnet连接状态

Linux 状态命令之网络状态 telnet
https://flepeng.github.io/002-Linux-21-命令-Linux-状态命令之网络状态-telnet/
作者
Lepeng
发布于
2021年7月5日
许可协议