命令简介

telnet 是一种用于远程登录的端口访问协议,它为用户提供了在本地计算机上完成远程主机工作的能力。用户可以利用 telnet 命令来远程连接各种服务,如 HTTP、FTP、SMTP 等服务,并通过交互方式获取目标系统的运行状态。在现代网络环境中,telnet 命令因其简单性和便利性而仍然广泛应用。

命令格式

1
telnet [选项] 主机地址 [端口号]

参数说明

参数 描述 备注
-8 允许使用8位字符数据路径 默认使用7位
-E 停止任何自动远程主机的 Escape 字符执行 非标准行为
-L 指定8位输出数据路径 默认使用7位
-b 切换为二进制传输模式
-e 退出字符 设置退出 telnet 会话的字符 默认是 ^]
-k 连接 从 UNIX 系统内核获取主机名或服务器地址
-l 用户标识 在连接时使用指定的用户标识
-n 文件记录 记录会话交互到指定文件 telnet -n record.log

命令实例

基本用法

1.远程登录主机

1
telnet 192.168.1.100

使用 telnet 连接到指定的远程主机上。

2.连接指定端口

1
telnet 192.168.1.100 8080

使用 telnet 连接到指定主机的特定端口。

3.指定用户身份

1
telnet -l user 192.168.1.100

以指定的用户身份连接到远程主机。

4.记录会话交互

1
telnet -n record.log 192.168.1.100

将与远程主机的整个会话交互记录到 record.log 文件中。

高级用法

1.基本 HTTP 连接测试

1
2
3
4
5
6
telnet www.example.com 80
Trying 93.184.216.34...
Connected to example.com.
Escape character is '^]'.
GET / HTTP/1.1
Host: www.example.com

上面的命令连接到指定网站的 HTTP 端口 80,并发送一个基本的 GET 请求,可以检查网站是否正常运行。

2.检测端口状态

利用 telnet 命令也可以快速检测端口的开放情况。

1
2
3
4
5
6
#!/bin/bash

host=$1
port=$2

(printf '' >/dev/tcp/$host/$port) > /dev/null 2>&1 && echo "$host:$port open" || echo "$host:$port closed"

上面的脚本会尝试连接指定的 host:port,如果连接成功表示端口开放,否则表示端口被关闭。非常适合于快速诊断网络服务状态。

3.建立安全连接

telnet 命令本身不支持安全连接,但是可以结合其他工具实现。比如使用 stunnel 这个工具,可以建立基于 SSL 的安全 telnet 连接。

1
2
3
4
5
# 服务端配置
stunnel stunnel.conf

# 客户端连接
telnet localhost 8023 # 8023 是 stunnel 配置的端口

stunnel 支持各种协议,不仅可以加密 telnet 连接,还能加密许多其他的应用层协议。

总的来说,尽管 telnet 本身相对比较简单,但结合其他工具后能够发挥出更大的潜力。无论是远程管理系统、诊断网络状态,还是建立安全连接,telnet 都是一个非常有用的工具,值得 Linux 运维人员熟练掌握。如有任何其他疑问,欢迎继续提问。