Telnet 缺乏加密,这使得 OpenSSL 成为连接远程系统的更安全的选择。

telnet?命令是最受欢迎的网络故障排除工具之一,从系统管理员到网络爱好者都可以使用。在网络计算的早期,telnet?被用来连接到一个远程系统。你可以用?telnet?访问一个远程系统的端口,登录并在该主机上运行命令。

由于?telnet?缺乏加密功能,它在很大程度上已经被 OpenSSL 取代了这项工作。然而,作为一种智能的?ping,telnet?的作用仍然存在(甚至在某些情况下至今仍然存在)。虽然?ping?命令是一个探测主机响应的好方法,但这是它能做的?全部。另一方面,telnet?不仅可以确认一个活动端口,而且还可以与该端口的服务进行交互。即便如此,由于大多数现代网络服务都是加密的,telnet?的作用可能要小得多,这取决于你想实现什么。

OpenSSL s_client

对于大多数曾经需要?telnet?的任务,我现在使用 OpenSSL 的?s_client?命令。(我在一些任务中使用?curl,但那些情况下我可能无论如何也不会使用?telnet)。大多数人都知道?OpenSSL?是一个加密的库和框架,但不是所有人都意识到它也是一个命令。openssl?命令的?s_client?组件实现了一个通用的 SSL 或 TLS 客户端,帮助你使用 SSL 或 TLS 连接到远程主机。它是用来测试的,至少在内部使用与该库相同的功能。

安装 OpenSSL

OpenSSL 可能已经安装在你的 Linux 系统上了。如果没有,你可以用你的发行版的软件包管理器安装它:

$ sudo dnf install openssl

在 Debian 或类似的系统上:

$ sudo apt install openssl

安装后,验证它的响应是否符合预期:

$ openssl version
OpenSSL x.y.z FIPS

验证端口访问

最基本的?telnet?用法是一个看起来像这样的任务:

$ telnet mail.example.com 25
Trying 98.76.54.32...
Connected to example.com.
Escape character is '^]'.

在此示例中,这将与正在端口 25(可能是邮件服务器)监听的任意服务打开一个交互式会话。只要你获得访问权限,就可以与该服务进行通信。

如果端口 25 无法访问,连接就会被拒绝。

OpenSSL 也是类似的,尽管通常较少互动。要验证对一个端口的访问:

$ openssl s_client -connect example.com:80
CONNECTED(00000003)
140306897352512:error:1408F10B:SSL [...]no peer certificate availableNo client certificate CA names sentSSL handshake has read 5 bytes and written 309 bytes
Verification: OKNew, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
Early data was not sent
Verify return code: 0 (ok)

但是,这仅是目标性?ping。从输出中可以看出,没有交换 SSL 证书,所以连接立即终止。为了充分利用?openssl s_client,你必须连接加密的端口。

交互式 OpenSSL

Web 浏览器和 Web 服务器进行交互,可以使指向 80 端口的流量实际上被转发到 443,这是保留给加密 HTTP 流量的端口。知道了这一点,你就可以用?openssl?命令连接到加密的端口,并与在其上运行的任何网络服务进行交互。

首先,使用 SSL 连接到一个端口。使用?-showcerts?选项会使 SSL 证书打印到你的终端上,一开始的输出要比 telnet 要冗长得多:

$ openssl s_client -connect example.com:443 -showcerts
[...]
? ? 0080 - 52 cd bd 95 3d 8a 1e 2d-3f 84 a0 e3 7a c0 8d 87 ? R...=..-?...z...
? ? 0090 - 62 d0 ae d5 95 8d 82 11-01 bc 97 97 cd 8a 30 c1 ? b.............0.
? ? 00a0 - 54 78 5c ad 62 5b 77 b9-a6 35 97 67 65 f5 9b 22 ? Tx\\.b[w..5.ge.."
? ? 00b0 - 18 8a 6a 94 a4 d9 7e 2f-f5 33 e8 8a b7 82 bd 94 ? ..j...~/.3......? ? Start Time: 1619661100
? ? Timeout ? : 7200 (sec)
? ? Verify return code: 0 (ok)
? ? Extended master secret: no
? ? Max Early Data: 0
-
read R BLOCK

你被留在一个交互式会话中。最终,这个会话将关闭,但如果你及时行动,你可以向服务器发送 HTTP 信号:

[...]
GET / HTTP/1.1
HOST: example.com

按回车键两次,你会收到?example.com/index.html?的数据:

[...]
<body>
<div>
<h1>Example Domain</h1>
<p>This domain is for use in illustrative examples in documents. You may use this
domain in literature without prior coordination or asking for permission.</p>
<p><a href="https://www.iana.org/domains/example">More information...</a></p>
</div>
</body>
</html>

OpenSSL 还是 Telnet?

telnet?仍然有用途,但它已经不是以前那种不可缺少的工具了。该命令在许多发行版上被归入 “遗留” 网络软件包,而且还没有?telnet-ng?之类的明显的继任者,管理员有时会对它被排除在默认安装之外感到疑惑。答案是,它不再是必不可少的,它的作用越来越小,这?很好。网络安全很重要,所以要适应与加密接口互动的工具,这样你就不必在排除故障时禁用你的保护措施。

使用 OpenSSL 替代 Telnet相关推荐

  1. SSL、SSH、OpenSSH、OpenSSL 区别

    SSL 是通讯链路的附加层.可以包含很多协议.https, ftps, ..... ssl是一种国际标准的加密及身份认证通信协议,您用的浏览器就支持此协议.SSL(Secure Sockets Lay ...

  2. SSL,SSH,OpenSSL,OpenSSH,HTTPS的区别

    HTTPS:可以使用TLS或者SSL协议,而openssl是TLS.SSL协议的开源实现,提供开发库和命令行程序.openssl很优秀,所以很多涉及到数据加密.传输加密的地方都会使用openssl的库 ...

  3. 转载: java telnet ssh 实现

    原文:http://blog.csdn.net/Code_cj/article/details/6411682 java telnet ssh 实现 2011-05-1113:17 911人阅读 评论 ...

  4. telnet远程登陆、mstsc远程控制、SSH之间的比较和区别

    Telnet与远程桌面mstsc 一 演示 打开mstsc演示: 01 win + r 输入mstsc 02 输入要远程的机子的用户名和密码 03 登录 04 连接开启了,如图即是通过win窗口操作远 ...

  5. Telnet、Mstsc、SSH之间的比较和区别

    今天需要用telnet到IBM服务器的交换机模块上进行配置,但是当我打开windows server 2008自带的CMD输入telnet命令之后,系统却提示我"不是内部或外部命令也不是可运 ...

  6. SSH、telnet、远程桌面区别

    1.telnet和远程桌面的区别 远程桌面采用的是一种类似TELNET的技术,他是从TELNET协议发展而来的.通俗的讲他就是图形化的TELNET.(他是一种C/S模式,客户机可以通过TELNET登录 ...

  7. ssh,vnc,telnet 、mstsc协议

    前言:我们经常听见各种各样的协议,什么ssh,vnc,rdp,telnet等等,他们似乎都实现着类似的功能,有时候傻傻分不清楚,其实她们基本上都是近亲,本文着重讨论一下这三者之间的关系,可以参考前一篇 ...

  8. Telnet,Mstsc,SSH,FTP之间的比较和区别

    文章目录 1 Telnet 1.1 Telnet是什么协议 1.2 Telnet有什么用 1.2.1 Telnet使用 1.3 Telnet系统组成 2 Telnet与mstsc的区别 3 SSH 3 ...

  9. 网络基础配置--开启SSH,关闭Telnet

    1.Telnet和SSH对比 1.1.TELNET 使用Telnet这个用来访问远程计算机的TCP/IP协议以控制你的网络设备相当于在离开某个建筑时大喊你的用户名和口令.很快会有人进行监听,并且他们会 ...

最新文章

  1. 一段java代码是如何执行的?
  2. DJango操作MySQL数据库
  3. 【Java】7.5 正则表达式 7.6 Java 8 新增的日期、时间格式器
  4. JDBC连接mysql--学习目录
  5. 最全!最完整的设计词法分析程序的代码!!!
  6. 1.IT-解决方案-1-FTP
  7. android自定义渐变色,Android设置背景渐变色
  8. 原来R语言还有这些不为人知的用处!
  9. android7.0 蓝牙定位,BluetoothAdapter在Android6.0/7.0+以上startDiscovery不能发现蓝牙设备问题...
  10. Being a Good Boy in Spring Festival【博弈】
  11. java中什么是底层数据结构_JavaScript 对象的底层数据结构是什么
  12. SAP License:中国集团管控存在的主要问题-已加入点评
  13. tp3.2 模型实例化
  14. Java线程池如何体现自己的用途
  15. 流程图软件Microsoft Visio
  16. FATAL: kernel too old
  17. 用python的numpy实现mnist手写数字识别
  18. 引力产生的原因是什么
  19. vbs脚本实现Ping功能
  20. 第106篇 Compound 中的 Governance

热门文章

  1. 世界上有哪些代码量很少,但很牛逼很经典的算法或项目案例?
  2. golang源码分析:编译过程词法解析的流程
  3. Python设计模式-中介者模式
  4. python进程执行带有参数的任务(args、kwargs)
  5. 最新!2022中国大学校友会排名发布
  6. 为什么U-Net在医学图像上表现优越?
  7. 一,初次接触html+css需要注意的小问题
  8. OpenvSwitch代码分析之bridge和port
  9. Apache Spark源码走读之8 -- Spark on Yarn
  10. 开源 免费 java CMS - FreeCMS1.5 标签 guestbookPage