当前位置: 首页 > news >正文

telnet命令

telnet命令是我们最常用的网络调试命令之一。如果你的机器上还没有安装telnet命令,可以使用如下命令安装一下:

yum install telnet

如果一个服务程序对外开启了侦听服务,我们都可以使用telnet ip port来连接上去,例如:

[root@localhost ~]# telnet 120.55.94.78 8888 Trying 120.55.94.78... Connected to 120.55.94.78. Escape character is '^]'.

如果不指定端口号,telnet会使用默认23号端口。

反过来说,可以通过telnet命令去检测指定 ip 地址和端口号的侦听服务是否存在。知道这点很重要,我们可以利用这个去检测一个服务是否可以正常连接。举个例子,比如某次从某处得到一个代码下载地址,这是一个 svn 地址:svn://120.55.94.78/mycode/mybook。为了检测这个 svn 服务是否还能正常对外服务,我们可以先用ping命令去检测一下到达这个 ip:120.55.94.78的网络是否畅通:

[root@localhost ~]# ping 120.55.94.78 PING 120.55.94.78 (120.55.94.78) 56(84) bytes of data. 64 bytes from 120.55.94.78: icmp_seq=1 ttl=128 time=15.3 ms 64 bytes from 120.55.94.78: icmp_seq=2 ttl=128 time=14.3 ms 64 bytes from 120.55.94.78: icmp_seq=3 ttl=128 time=16.4 ms 64 bytes from 120.55.94.78: icmp_seq=4 ttl=128 time=16.1 ms 64 bytes from 120.55.94.78: icmp_seq=5 ttl=128 time=15.5 ms ^C --- 120.55.94.78 ping statistics --- 5 packets transmitted, 5 received, 0% packet loss, time 4007ms rtt min/avg/max/mdev = 14.343/15.568/16.443/0.723 ms

如果网络畅通,我们再用 telnet 去连接上去,由于 svn 服务器使用的默认端口是3690,我们执行如下命令:

[root@localhost ~]# telnet 120.55.94.78 3690 Trying 120.55.94.78... Connected to 120.55.94.78. Escape character is '^]'. ( success ( 2 2 ( ) ( edit-pipeline svndiff1 absent-entries commit-revprops depth log-revprops atomic-revprops partial-replay ) ) )

如上所示,证明这个 svn 服务是正常开启对外服务的。反之,如果telnet命令连不上,说明这个服务不能被外部网络正常连接,我们就没必要去做进一步的尝试了。

同样的道理,对于一个 Web 服务,如 baidu.com,由于我们平常都可以通过www.baidu.com去访问百度的页面,Web 服务器默认的端口号是80,我们使用telnet www.baidu.com 80应该也可以连接成功的:

[root@localhost ~]# telnet www.baidu.com 80 Trying 115.239.211.112... Connected to www.baidu.com. Escape character is '^]'. hello HTTP/1.1 400 Bad Request Connection closed by foreign host.

我们使用telnet命令连接上以后,我们随意发送了一个hello消息,由于是非法的 http 请求,被服务器关闭了连接。

telnet命令不仅可以连接某个服务器,还能与服务器进行交互,这通常用于操作一些接受纯文本数据的服务器程序,如 FTP 服务、邮件服务等等。为了演示如何利用telnet命令收发数据,我们这里利用telnet命令来模拟给某个邮箱发送一封邮件,发送邮件我们通常使用的是 SMTP 协议,该协议默认使用的端口为25

假设我们的发件地址是:testformybook@163.com,收件地址是:balloonwj@qq.com。

其中发件地址是一个 163 邮箱,如果你没有的话可以去申请一个,申请后进入邮箱,在设置页面获得网易邮箱的 smtp 服务的服务器地址:

我们得到的地址 smptp 地址是smtp.163.com,端口号是25

同时,我们需要开启客户端授权,设置一个客户端授权码:

我们这里将授权码设置为2019hhxxttxs

早些年很多邮件服务器允许在其他客户端登陆只需要输入正确的邮件服务器地址、用户名和密码就可以了,后来出于安全考虑,很多邮箱采用了授权码机制,在其他第三方客户端登陆该邮箱时需要输入授权码(不是密码),且需要用户主动打开允许第三方客户端登陆的配置选项。

配置完成以后,我们现在就可以利用telnet命令连接 163 邮件服务器并发送邮件了,由于在登陆的过程中需要验证用户名和授权码,而且用户名和授权码必须使用 base64 编码之后的,我们先将用户名和授权码的 base64 码准备好,用的时候直接拷贝过去:

原文base64 码
testformybookdGVzdGZvcm15Ym9vaw==
2019hhxxttxsMjAxOWhoeHh0dHhz

如果你不知道 base64 编码的原理,可以从网上搜索找一个 base64 编解码工具,例如:https://base64.supfree.net/。

在整个演示过程我们一共需要使用如下 SMTP 协议命令:

命令含义
helo向 smtp 服务器发送问候信息
auth login请求登陆验证
data请求输入邮件正文

SMTP 协议是文本协议,每一个数据包以\r\n结束(Windows 系统下默认换行符)。

我们来看一下演示过程:

[root@localhost ~]# telnet smtp.163.com 25 Trying 220.181.12.14... Connected to smtp.163.com. Escape character is '^]'. 220 163.com Anti-spam GT for Coremail System (163com[20141201]) helo 163.com 250 OK auth login 334 dXNlcm5hbWU6 dGVzdGZvcm15Ym9vaw== 334 UGFzc3dvcmQ6 MjAxOWhoeHh0dHhz 235 Authentication successful mail from: <testformybook@163.com> 250 Mail OK rcpt to: <balloonwj@qq.com> 250 Mail OK data 354 End data with <CR><LF>.<CR><LF> from:testformybook@163.com to: balloonwj@qq.com subject: Test Hello, this is a message from 163. . 250 Mail OK queued as smtp10,DsCowADHAgQS1IBcwtExJA--.62308S2 1551946998 Connection closed by foreign host. [root@localhost ~]#

我们来分析一下上述操作过程:

  1. 使用telnet smtp.163.com 25连接 163 邮件服务器;连接成功以后,服务器给我们发送了一条欢迎消息:

    220 163.com Anti-spam GT for Coremail System (163com[20141201])\r\n
  2. 接着,必须向服务器发送一条问候消息,使用helo 163.com,当然163.com这个是问候内容,可以随意填写,然后回车,最终组成的数据包内容是:

    helo 163.com\r\n
  3. 接着服务器会回复一条状态码是250的消息,这里是:

    250 OK\r\n
  4. 我们再输入命令auth login请求验证,然后按回车,实际发送给服务器的是:

    auth login\r\n
  5. 服务器应答状态码334

    334 dXNlcm5hbWU6\r\n

    dXNlcm5hbWU6是字符串 **username: ** 的 base64 码。

  6. 我们输入我们的用户名testformybook的 base64 码,然后按回车:

    dGVzdGZvcm15Ym9vaw==\r\n
  7. 服务器应答状态码334

    334 UGFzc3dvcmQ6\r\n

    UGFzc3dvcmQ6是字符串Password:的 base64 码。这里实际上要求我们输入的是上文介绍的授权码,而不是密码。

  8. 我们输入MjAxOWhoeHh0dHhz,并回车:

    MjAxOWhoeHh0dHhz\r\n

    服务器提示我们授权成功(应答状态码235):

    235 Authentication successful\r\n
  9. 接着输入邮件的发件地址和收件地址,服务器也会给我们响应的应答(应答状态码250):

    mail from: <testformybook@163.com>\r\n 250 Mail OK\r\n rcpt to: <balloonwj@qq.com>\r\n 250 Mail OK\r\n
  10. 接着输入data命令设置邮件的主题、正文、对方收到邮件后显示的的发件人信息等:

    data\r\n 354 End data with <CR><LF>.<CR><LF>

    服务器应答354,并且提示,如果确定结束输入邮件正文就先按一个回车键,再输入一个点.,再接着回车,这样邮件就发送出去了。

  11. 服务器应答250

    250 Mail OK queued as smtp10,DsCowADHAgQS1IBcwtExJA--.62308S2 1551946998
  12. 如果我们想退出,输入quitclose都可以。

最终,这封邮件就发出去了,我们去balloonwj@qq.com这个邮箱查看一下:

如果你在实际实验时,对端没有收到邮件,请查看下你的垃圾箱或者邮箱反垃圾邮件设置,有可能被邮箱反垃圾邮件机制给拦截了。

上述在组装 SMTP 协议包时涉及到很多状态码,常见的 SMTP 状态码含义如下:

211 帮助返回系统状态 214 帮助信息 220 服务准备就绪 221 关闭连接 235 用户验证成功 250 请求操作就绪 251 用户不在本地,转寄到其他路径 334 等待用户输入验证信息 354 开始邮件输入 421 服务不可用 450 操作未执行,邮箱忙 451 操作中止,本地错误 452 操作未执行,存储空间不足 500 命令不可识别或语言错误 501 参数语法错误 502 命令不支技 503 命令顺序错误 504 命令参数不支持 550 操作未执行,邮箱不可用 551 非本地用户 552 中止存储空间不足 553 操作未执行,邮箱名不正确 554 传输失败

由于我们使用的开发机器以 Windows 居多,默认情况下,Windows 系统的 telnet 命令是没有开启的,我们可以在【控制面板】- 【程序】- 【程序和功能】- 【打开或关闭Windows功能】中打开telnet功能。如下图所示:

http://www.gsyq.cn/news/1594201.html

相关文章:

  • ExtractorSharp游戏资源编辑器:从零开始制作DNF补丁的完整指南
  • CVE-2025-49596漏洞剖析:从MCP Inspector未授权访问到RCE的攻防实战
  • ExifToolGui完整指南:从元数据管理到批量处理的终极解决方案
  • STM32单片机指纹开锁签到考勤系统127-3(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码
  • 树莓派Camera Module 3硬件解析与实战:从光谱感知到项目优化
  • 2026AI智能降重工具实测:10款网站对比,论文质量提升秘籍
  • 面向高效率电能转换的宽禁带功率器件方案——時科 SKSCxxNxx-T 系列 SiC N 沟道 MOSFET
  • Mac NTFS读写终极指南:3分钟解锁跨平台文件自由
  • 第一章Netty,更高级一些API的介绍
  • 完全掌握WebLaTeX:免费开源在线LaTeX编辑器深度解析与实战应用
  • Linux内核补丁实战指南:从概念到应用全解析
  • 为什么你的下一个Web项目需要一个专业的3D查看器?Online 3D Viewer为你解密
  • 如何用3步实现跨平台网络资源智能抓取与下载
  • JetBrains认证架构师亲授:中小企业IDEA版本迁移路线图——从社区版起步,到旗舰版升级的3个临界点、2次成本拐点与1次不可逆技术债预警
  • 每天一课:算法学习路线全解析
  • AJ-Report认证绕过至RCE漏洞深度剖析与实战复现
  • 显卡驱动深度清理终极指南:如何彻底解决驱动冲突问题
  • 字节AI岗位大揭秘:收藏这份超全解析,小白也能看懂大模型布局!
  • 软件泛化管理化的类型抽象与算法通用
  • 如何提高AI生成测试用例的质量,我总结了这套思路...
  • 当数据超过百万条后,我终于理解为什么大家都在学Elasticsearch
  • NMKD Stable Diffusion GUI:免费开源的文本到图像生成终极指南
  • 计算机毕业设计之基于微信小程序的桶装水订水系统的设计与实现
  • 【共创季稿事节】鸿蒙ArkTS粘性标题布局深度解析
  • 海纳AI面试官:重塑餐饮酒旅行业招聘新生态
  • 为什么Fooocus让AI图像生成从复杂工程变为创意表达?
  • 兴盛优选小程序技术架构解析:S2B2C社区电商的实战设计与实现
  • 如何构建高性能跨平台抢票工具:Tauri+Rust+Vue技术栈实战指南
  • 如何在3分钟内完成Windows和Office的智能激活:终极免费解决方案指南
  • 如何在Windows 10/11上彻底卸载Microsoft Edge:终极解决方案