linux telnet命令

命令简介

telnet 是一个基于Telnet协议的远程登录工具,用于在网络上连接到远程主机并进行交互式操作。它曾是Unix/Linux系统远程管理的主要工具,但现在由于其安全性问题(明文传输),已经被SSH所取代。

安全警告:telnet 使用明文传输,包括用户名、密码和所有数据,易被截获。生产环境强烈建议使用 ssh 替代!

然而,telnet仍然在以下场景中有用:

  • 网络服务测试:测试TCP端口连通性
  • 服务调试:手动测试SMTP、HTTP、POP3等协议
  • 遗留系统:连接不支持SSH的老旧设备
  • 网络教学:学习网络协议和通信原理

基本语法

# 基本格式
telnet [选项] [主机名或IP地址] [端口]

# 常用格式
telnet 192.168.1.1
telnet example.com 80
telnet -l username server.example.com

telnet 与 ssh 对比

特性 telnet ssh
传输安全 明文传输,不安全 加密传输,安全
认证方式 用户名/密码(明文) 密钥认证、密码认证(加密)
端口 23(默认) 22(默认)
数据完整性 无完整性保护 有完整性校验
压缩 不支持 支持
端口转发 不支持 支持(本地/远程/动态)
X11转发 不支持 支持
文件传输 不支持(需其他工具) 支持(SCP/SFTP)
适用场景 测试、调试、遗留系统 生产环境、安全远程管理
现代使用 不推荐用于生产 推荐用于所有远程连接

常用选项

选项 描述
-l 用户名 指定登录用户名
-a 尝试自动登录(基于当前用户)
-e 转义字符 设置转义字符(默认为Ctrl+])
-E 禁用转义字符功能
-8 使用8位数据传输(二进制模式)
-K 禁用自动登录
-L 使用逐字模式(输出8位数据)
-n 跟踪文件 记录跟踪信息到文件
-d 开启调试模式
-r 使用类似rlogin的用户界面
-S 服务类型 设置IP服务类型(TOS)
-c 命令 执行命令后退出(某些实现)
-f 客户端文件 从文件读取认证信息
-4 强制使用IPv4
-6 强制使用IPv6
-b 地址 绑定本地地址

安装telnet客户端

现代Linux系统通常不预装telnet客户端,需要手动安装:

# Debian/Ubuntu
sudo apt-get update
sudo apt-get install telnet

# RHEL/CentOS
sudo yum install telnet
# 或
sudo dnf install telnet

# Arch Linux
sudo pacman -S inetutils  # 包含telnet
# 或
sudo pacman -S telnet

# Fedora
sudo dnf install telnet

# 验证安装
which telnet
telnet --help
# 输出示例:telnet (Linux inetutils) 2.0

# 安装telnet服务器(不推荐用于生产)
# Debian/Ubuntu
sudo apt-get install telnetd
# RHEL/CentOS
sudo yum install telnet-server
# 启用服务(强烈不推荐)
sudo systemctl start telnet.socket
sudo systemctl enable telnet.socket

实际示例

示例1:基本远程登录

连接到远程telnet服务器:

# 1. 连接到远程telnet服务器
telnet 192.168.1.100
# 输出:
# Trying 192.168.1.100...
# Connected to 192.168.1.100.
# Escape character is '^]'.
#
# Ubuntu 20.04.3 LTS
# server1 login:
# 输入用户名和密码登录

# 2. 指定用户名登录
telnet -l username 192.168.1.100

# 3. 指定端口
telnet 192.168.1.100 23
# 23是telnet默认端口

# 4. 使用主机名连接
telnet server.example.com

# 5. 指定IP版本
telnet -4 server.example.com  # 强制IPv4
telnet -6 server.example.com  # 强制IPv6

# 6. 连接后操作
# 登录后,可以使用远程系统的shell
# 按Ctrl+]进入telnet命令模式
# telnet> help
# 显示可用命令
# telnet> quit
# 断开连接

# 7. 绑定本地地址
telnet -b 192.168.1.50 server.example.com
# 从指定本地IP连接

# 8. 自动登录
telnet -a server.example.com
# 尝试使用当前用户名自动登录

示例2:网络端口测试

使用telnet测试网络端口连通性:

# 1. 测试HTTP端口(80)
telnet example.com 80
# 连接成功后,输入HTTP请求:
GET / HTTP/1.1
Host: example.com

# 按两次回车,查看响应
# 输出HTTP响应头和信息

# 2. 测试HTTPS端口(443)
# telnet不能直接测试HTTPS,但可以测试端口连通性
telnet example.com 443
# 如果连接成功,说明端口开放
# 按Ctrl+]然后quit退出

# 3. 测试SSH端口(22)
telnet server.example.com 22
# 输出示例:
# SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.3
# 说明SSH服务正在运行

# 4. 测试SMTP端口(25)
telnet mail.example.com 25
# 连接后可以发送SMTP命令:
HELO test.example.com
MAIL FROM: 
RCPT TO: 
DATA
Subject: Test
This is a test email.
.
QUIT

# 5. 测试MySQL端口(3306)
telnet db.example.com 3306
# 输出乱码表示MySQL服务运行中

# 6. 测试Redis端口(6379)
telnet redis.example.com 6379
# 连接后可以发送Redis命令:
PING
# 应该返回:+PONG
INFO
QUIT

# 7. 测试DNS端口(53)
# 需要发送DNS协议数据包,通常用dig或nslookup测试

# 8. 批量测试端口
#!/bin/bash
# 文件名:port-check.sh
host="example.com"
ports="22 80 443 3306 5432 6379"

for port in $ports; do
    echo -n "检查端口 $port: "
    timeout 2 telnet $host $port 2>&1 | grep -q "Connected"
    if [ $? -eq 0 ]; then
        echo "✓ 开放"
    else
        echo "✗ 关闭"
    fi
done

示例3:服务协议调试

使用telnet手动测试各种网络协议:

# 1. SMTP邮件发送测试
telnet smtp.gmail.com 587
# 或
telnet smtp.gmail.com 465
# 发送SMTP命令测试

# 2. POP3邮件接收测试
telnet pop.gmail.com 995
# 发送:
USER username
PASS password
LIST
RETR 1
QUIT

# 3. IMAP协议测试
telnet imap.gmail.com 993
# 发送IMAP命令

# 4. FTP协议测试
telnet ftp.example.com 21
# 连接后发送FTP命令:
USER anonymous
PASS test@example.com
LIST
QUIT

# 5. HTTP/1.1完整请求
telnet httpbin.org 80
# 输入:
GET /get HTTP/1.1
Host: httpbin.org
User-Agent: Telnet-Test
Accept: */*

# 6. 测试WebSocket握手
telnet echo.websocket.org 80
# 输入:
GET / HTTP/1.1
Host: echo.websocket.org
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==
Sec-WebSocket-Version: 13

# 7. 测试Memcached
telnet memcached.example.com 11211
# 发送:
set test 0 60 11
hello world
STORED
get test
VALUE test 0 11
hello world
END
quit

# 8. 测试Elasticsearch
telnet elasticsearch.example.com 9200
# 输入:
GET /_cluster/health
# 或
GET /

示例4:telnet交互命令

telnet命令行模式的使用:

# 连接到远程主机
telnet 192.168.1.100

# 按Ctrl+]进入telnet命令模式
# 显示:telnet> 提示符

# 可用命令:
# 1. 显示状态
status
# 显示当前连接状态

# 2. 显示帮助
help
# 或
?
# 显示所有可用命令

# 3. 断开连接
close
# 或
quit
# 断开当前连接

# 4. 挂起连接
z
# 挂起telnet会话,返回本地shell
# 恢复:fg

# 5. 发送特殊字符
send ayt
# 发送"Are You There"信号
send abort
# 发送中断信号
send eof
# 发送文件结束符
send escape
# 发送转义字符
send ip
# 发送中断进程信号
send synch
# 发送同步信号

# 6. 设置选项
mode line
# 设置逐行模式
mode character
# 设置字符模式

# 7. 切换本地回显
toggle localchars
# 切换本地字符处理
toggle autoflush
# 切换自动刷新

# 8. 设置环境变量
set VAR=value
# 设置环境变量
unset VAR
# 取消设置

# 9. 显示选项
display
# 显示当前选项设置

# 10. 记录会话
log file session.log
# 开始记录会话到文件
# 停止记录:log 或 log off

# 11. 设置终端类型
set term=vt100
# 设置终端类型

# 12. 超时设置
set timeout=10
# 设置连接超时(秒)

# 13. 返回连接
# 在telnet命令模式按回车返回远程会话

# 14. 退出telnet
quit
# 完全退出telnet程序

# 示例会话:
# $ telnet example.com 80
# Trying 93.184.216.34...
# Connected to example.com.
# Escape character is '^]'.
# 按Ctrl+]
# telnet> status
# Connected to example.com.
# Operating in character mode
# Escape character is '^]'.
# telnet> log http-request.log
# telnet> 按回车返回
# GET / HTTP/1.1
# Host: example.com
# 按Ctrl+]
# telnet> close
# Connection closed.

示例5:自动化脚本和测试

使用脚本自动化telnet测试:

#!/bin/bash
# 文件名:telnet-tests.sh
# telnet自动化测试脚本

# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color

# 函数:测试端口连通性
test_port() {
    local host=$1
    local port=$2
    local service=$3
    local timeout=2

    echo -n "测试 $service ($host:$port)... "

    # 使用telnet测试端口
    (echo -e "\035quit" | timeout $timeout telnet $host $port 2>&1) | grep -q "Connected"

    if [ $? -eq 0 ]; then
        echo -e "${GREEN}✓ 开放${NC}"
        return 0
    else
        echo -e "${RED}✗ 关闭${NC}"
        return 1
    fi
}

# 函数:测试HTTP服务
test_http() {
    local host=$1
    local port=${2:-80}

    echo -e "${BLUE}测试HTTP服务 ($host:$port)...${NC}"

    {
        sleep 1
        echo "GET / HTTP/1.1"
        echo "Host: $host"
        echo "Connection: close"
        echo ""
        sleep 2
    } | telnet $host $port 2>&1 | head -20
}

# 函数:测试SMTP服务
test_smtp() {
    local host=$1
    local port=${2:-25}

    echo -e "${BLUE}测试SMTP服务 ($host:$port)...${NC}"

    {
        sleep 1
        echo "HELO test.example.com"
        sleep 1
        echo "QUIT"
        sleep 1
    } | telnet $host $port 2>&1
}

# 函数:批量测试端口
batch_port_test() {
    local host=$1
    shift
    local ports=("$@")

    echo -e "${YELLOW}=== 批量端口测试 $host ===${NC}"

    for port in "${ports[@]}"; do
        case $port in
            22) test_port $host $port "SSH" ;;
            25) test_port $host $port "SMTP" ;;
            80) test_port $host $port "HTTP" ;;
            443) test_port $host $port "HTTPS" ;;
            3306) test_port $host $port "MySQL" ;;
            5432) test_port $host $port "PostgreSQL" ;;
            6379) test_port $host $port "Redis" ;;
            27017) test_port $host $port "MongoDB" ;;
            *) test_port $host $port "Port $port" ;;
        esac
    done
}

# 函数:监控服务可用性
monitor_service() {
    local host=$1
    local port=$2
    local interval=60
    local logfile="/var/log/service-monitor-$host-$port.log"

    echo -e "${YELLOW}监控服务 $host:$port (每${interval}秒检查一次)${NC}"
    echo "日志文件: $logfile"

    while true; do
        timestamp=$(date '+%Y-%m-%d %H:%M:%S')

        if test_port $host $port "监控检查" >/dev/null; then
            status="UP"
        else
            status="DOWN"
        fi

        echo "[$timestamp] $host:$port - $status" | tee -a $logfile

        if [ "$status" = "DOWN" ]; then
            echo -e "${RED}警告: 服务 $host:$port 不可用${NC}"
            # 可以添加警报机制,如发送邮件
            # echo "服务 $host:$port 下线" | mail -s "服务警报" admin@example.com
        fi

        sleep $interval
    done
}

# 主菜单
main_menu() {
    while true; do
        echo ""
        echo -e "${BLUE}=== Telnet测试工具 ===${NC}"
        echo "1. 单端口测试"
        echo "2. 批量端口测试"
        echo "3. HTTP服务测试"
        echo "4. SMTP服务测试"
        echo "5. 监控服务"
        echo "6. 退出"
        echo ""

        read -p "请选择 (1-6): " choice

        case $choice in
            1)
                read -p "主机名/IP: " host
                read -p "端口: " port
                read -p "服务名 (可选): " service
                test_port "$host" "$port" "${service:-Port $port}"
                ;;
            2)
                read -p "主机名/IP: " host
                echo "输入端口列表 (用空格分隔):"
                echo "示例: 22 80 443 3306"
                read -a ports
                batch_port_test "$host" "${ports[@]}"
                ;;
            3)
                read -p "主机名/IP: " host
                read -p "端口 (默认80): " port
                test_http "$host" "${port:-80}"
                ;;
            4)
                read -p "主机名/IP: " host
                read -p "端口 (默认25): " port
                test_smtp "$host" "${port:-25}"
                ;;
            5)
                read -p "主机名/IP: " host
                read -p "端口: " port
                read -p "检查间隔(秒,默认60): " interval
                monitor_service "$host" "$port" "${interval:-60}" &
                echo "监控已启动 (后台运行)"
                ;;
            6)
                echo "退出"
                exit 0
                ;;
            *)
                echo -e "${RED}无效选择${NC}"
                ;;
        esac
    done
}

# 运行主菜单
main_menu

示例6:故障排查和安全配置

telnet故障排查和安全注意事项:

# 1. 常见连接问题
# 连接被拒绝
telnet 192.168.1.100
# 输出:Connection refused
# 原因:目标端口没有监听服务

# 连接超时
telnet 192.168.1.100
# 输出:Connection timed out
# 原因:网络不通、防火墙阻止、主机不存在

# 2. 调试模式
telnet -d example.com 80
# 显示详细调试信息

# 3. 网络诊断
# 先ping测试
ping -c 3 example.com
# 再测试端口
telnet example.com 80

# 4. 防火墙检查
# 检查本地防火墙
sudo iptables -L -n
sudo ufw status
# 检查远程防火墙
# 需要管理员权限

# 5. 路由追踪
traceroute example.com
mtr example.com
# 查看网络路径

# 6. DNS解析检查
nslookup example.com
dig example.com
# 确认域名解析正确

# 7. 安全风险缓解
# 如果必须使用telnet服务器:

# a. 使用防火墙限制访问
sudo iptables -A INPUT -p tcp --dport 23 -s 192.168.1.0/24 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 23 -j DROP

# b. 使用TCP Wrappers
# 编辑/etc/hosts.allow
telnetd: 192.168.1.
# 编辑/etc/hosts.deny
telnetd: ALL

# c. 使用VPN隧道
# 在VPN隧道内使用telnet

# d. 定期审计日志
sudo grep telnet /var/log/auth.log
sudo grep telnet /var/log/secure

# e. 使用强密码策略
# 配置PAM强制复杂密码

# f. 监控异常登录
# 配置fail2ban
sudo apt-get install fail2ban
sudo nano /etc/fail2ban/jail.local
# 添加:
[telnet]
enabled = true
port = 23
filter = telnet
logpath = /var/log/auth.log
maxretry = 3
bantime = 3600

# 8. 替代方案:使用加密的telnet
# 安装stelnet(SSL加密的telnet)
sudo apt-get install stunnel
# 配置SSL隧道

# 9. 从telnet迁移到SSH
# a. 安装SSH服务器
sudo apt-get install openssh-server
# b. 配置SSH
sudo nano /etc/ssh/sshd_config
# 禁用密码认证,启用密钥认证
# c. 迁移用户
# 为每个用户生成SSH密钥
ssh-keygen -t rsa
ssh-copy-id user@server
# d. 禁用telnet
sudo systemctl stop telnet.socket
sudo systemctl disable telnet.socket
# e. 测试SSH连接
ssh user@server

# 10. 网络抓包分析
# 使用tcpdump监控telnet流量
sudo tcpdump -i any port 23 -A
# 可以看到所有明文数据!
# 这演示了telnet的不安全性

# 11. 性能测试
time telnet example.com 80 < /dev/null
# 测试连接建立时间

# 12. 脚本自动化故障排查
#!/bin/bash
# telnet故障排查脚本
check_service() {
    host=$1
    port=$2

    echo "检查 $host:$port"
    echo "1. DNS解析..."
    nslookup $host 2>&1 | grep -A2 "Name:"

    echo "2. Ping测试..."
    ping -c 2 -W 1 $host 2>&1 | grep -E "packet loss|time="

    echo "3. Telnet连接测试..."
    timeout 3 telnet $host $port 2>&1 | grep -E "Connected|refused|timed out"

    echo "4. 路由检查..."
    traceroute -m 5 -w 1 $host 2>&1 | head -10
}

check_service example.com 80

telnet安全警告

重要安全警告

telnet 协议存在严重的安全缺陷,使用时需特别注意:

  • 明文传输:所有数据(包括密码)以明文传输,易被网络嗅探
  • 无认证加密:无数据完整性校验,易受中间人攻击
  • 会话劫持:攻击者可劫持活跃的telnet会话
  • 密码猜测:无登录失败保护机制
  • 无数据加密:敏感信息(如命令输出)完全暴露

强烈建议:

  1. 生产环境绝不使用telnet
  2. 使用SSH(Secure Shell)替代所有telnet用途
  3. 如必须使用,应在VPN隧道内运行
  4. 配置严格的防火墙规则限制访问
  5. 定期审计和监控telnet访问日志
不应使用telnet的场景
  • 生产服务器远程管理
  • 传输敏感数据
  • 互联网上的任何连接
  • 需要身份验证的服务
  • 金融、医疗等敏感行业
  • 多用户共享环境
相对安全的用法
  • 本地网络测试和调试
  • 实验室/测试环境
  • 无敏感数据的设备
  • 通过VPN的私有网络
  • 只读服务的监控
  • 教育和演示目的

SSH替代方案

ssh 基本使用
# 基本连接
ssh username@hostname
# 指定端口
ssh -p 2222 username@hostname
# 使用密钥认证
ssh -i ~/.ssh/id_rsa username@hostname
# 执行远程命令
ssh username@hostname "ls -la"
# 端口转发
ssh -L 8080:localhost:80 username@hostname
# X11转发
ssh -X username@hostname
# 保持连接
ssh -o ServerAliveInterval=60 username@hostname
ssh 高级功能
# 配置别名
# ~/.ssh/config
Host myserver
    HostName server.example.com
    User username
    Port 2222
    IdentityFile ~/.ssh/myserver_key
# 使用:ssh myserver

# SSH隧道替代telnet
# 通过SSH执行telnet命令
ssh -t username@hostname "telnet localhost 3306"

# SOCKS代理
ssh -D 1080 username@hostname
# 浏览器配置SOCKS代理使用

# 远程文件编辑
sshfs username@hostname:/remote/path /local/mount
# 使用SFTP
sftp username@hostname
# 或
scp file.txt username@hostname:/path/

常见问题

迁移步骤:

  1. 安装SSH服务器:
    # Debian/Ubuntu
    sudo apt-get install openssh-server
    # RHEL/CentOS
    sudo yum install openssh-server
  2. 配置SSH:
    sudo nano /etc/ssh/sshd_config
    # 重要设置:
    Port 22
    PermitRootLogin no
    PasswordAuthentication no
    PubkeyAuthentication yes
    AllowUsers username1 username2
  3. 生成SSH密钥:
    ssh-keygen -t rsa -b 4096
    # 或
    ssh-keygen -t ed25519
  4. 分发公钥:
    ssh-copy-id username@server
    # 或手动复制~/.ssh/id_rsa.pub到服务器的~/.ssh/authorized_keys
  5. 测试SSH连接:
    ssh username@server
    # 应无需密码登录
  6. 禁用telnet:
    sudo systemctl stop telnet.socket
    sudo systemctl disable telnet.socket
    # 或卸载
    sudo apt-get remove telnetd
  7. 防火墙调整:
    # 允许SSH,禁止telnet
    sudo ufw allow 22/tcp
    sudo ufw deny 23/tcp
    # 或
    sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
    sudo iptables -A INPUT -p tcp --dport 23 -j DROP
  8. 监控和验证:
    # 检查SSH日志
    sudo tail -f /var/log/auth.log | grep sshd
    # 验证telnet已禁用
    telnet localhost 23
    # 应连接被拒绝

优化telnet连接速度:

  1. 禁用DNS反向解析:
    # 在服务器端编辑/etc/hosts
    127.0.0.1 localhost localhost.localdomain
    # 避免DNS查询延迟
    # 或使用IP地址而非主机名连接
  2. 调整超时设置:
    # 客户端使用更短的超时
    telnet -t 5 server.example.com
    # 设置5秒超时
  3. 禁用Nagle算法:
    # 在telnet命令模式
    telnet> toggle tcpdelay
    # 禁用TCP延迟确认
  4. 使用二进制模式:
    telnet -8 server.example.com
    # 使用8位数据传输
  5. 网络优化:
    # 检查MTU设置
    ping -s 1472 -M do server.example.com
    # 调整MTU减少分片
    sudo ifconfig eth0 mtu 1400
    # 优化TCP参数
    sudo sysctl -w net.ipv4.tcp_window_scaling=1
    sudo sysctl -w net.ipv4.tcp_timestamps=1
  6. 使用更快的终端类型:
    # 设置简单的终端类型
    export TERM=vt100
    telnet server.example.com
  7. 检查线路质量:
    # 测试网络延迟
    ping server.example.com
    # 测试带宽
    iperf3 -c server.example.com
    # 检查丢包
    mtr server.example.com
  8. 考虑替代方案:
    # SSH通常更快
    ssh server.example.com
    # 或使用mosh(移动shell)
    mosh server.example.com

安全测试指南:

  1. 使用测试账户:创建专用的测试账户,权限最小化
    sudo useradd -m -s /bin/bash tester
    sudo passwd tester
    # 限制权限
    sudo usermod -a -G testers tester
  2. 隔离网络:在隔离的网络环境中测试
    # 使用虚拟网络
    virsh net-define isolated-network.xml
    # 或物理隔离
    # 不连接到生产网络
  3. 使用VPN:在VPN隧道内进行测试
    # 建立OpenVPN连接
    sudo openvpn --config client.ovpn
    # 在VPN内使用telnet
    telnet 10.8.0.1
  4. 加密敏感数据:测试前加密敏感信息
    # 使用gpg加密
    echo "password123" | gpg -e -r tester@example.com > password.gpg
    # 测试时解密
    gpg -d password.gpg | telnet server.example.com
  5. 使用一次性密码:
    # 生成一次性密码
    otp=$(openssl rand -base64 12)
    # 设置临时密码
    echo "tester:$otp" | chpasswd
    # 立即使用
    telnet -l tester server.example.com
    # 测试后禁用账户
    sudo usermod -L tester
  6. 监控和记录:记录所有测试活动
    # 使用script记录会话
    script -c "telnet server.example.com" session.log
    # 或telnet内置记录
    telnet server.example.com
    # 按Ctrl+]
    telnet> log test-session.log
  7. 及时清理:测试完成后清理
    # 删除测试账户
    sudo userdel -r tester
    # 清除历史记录
    history -c
    # 删除日志文件
    shred -u session.log
  8. 考虑替代工具:使用更安全的测试工具
    # 使用netcat
    nc -zv server.example.com 80
    # 使用nmap
    nmap -p 80 server.example.com
    # 使用curl
    curl -I http://server.example.com

完全替代方案:

telnet用途 现代替代方案 优势
远程登录 ssh, mosh 加密传输,支持密钥认证,端口转发
文件传输 scp, sftp, rsync 加密传输,断点续传,增量同步
端口测试 nc (netcat), nmap 更精确的控制,脚本友好,功能丰富
HTTP测试 curl, wget, httpie HTTP专用,支持HTTPS,格式美化
邮件测试 swaks, mailx, Python脚本 专门工具,更好的错误处理
数据库测试 各数据库客户端,如mysql, psql 原生客户端,功能完整,安全
远程命令 ssh + 命令, ansible, salt 批量执行,配置管理,幂等性
终端复用 tmux, screen (通过SSH) 会话保持,多窗口,共享会话

迁移示例:

# 旧的telnet用法
telnet mail.example.com 25
HELO test.example.com
QUIT

# 使用swaks替代
swaks --to test@example.com --from test@example.com --server mail.example.com

# 旧的telnet端口测试
telnet example.com 80
GET / HTTP/1.0

# 使用curl替代
curl -I http://example.com/
# 或
curl -v http://example.com/

# 旧的telnet远程登录
telnet server.example.com
# 输入用户名密码

# 使用ssh替代
ssh user@server.example.com
# 或使用密钥
ssh -i ~/.ssh/id_rsa user@server.example.com

# 端口连通性测试
# 旧的:telnet example.com 443
# 新的:
nc -zv example.com 443
# 或
nmap -p 443 example.com

# 批量端口扫描
# 旧的:循环使用telnet
# 新的:
nmap -p 1-1000 example.com
# 或
masscan -p1-1000 example.com

# 结论:对于所有telnet用例,都有更好的现代替代方案