文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

为什么Telnet依旧很流行!

2024-11-30 12:45

关注

点击参加51CTO网站内容调查问卷

策划 | 言征

Telnet、协议和命令行工具是系统管理员用来登录远程服务器的方式。然而,由于没有加密,包括密码在内的所有通信都以明文形式发送,这意味着几乎在 SSH 创建后就放弃了 Telnet,转而使用 SSH。

出于登录远程服务器的目的,你永远不应该也可能从未考虑过它。这并不意味着该telnet命令在用于调试远程连接问题时不是一个非常有用的工具。

在本指南中,我们将探索如何使用telnet来回答这个太常见的问题——“为什么我不能 ###### 连接?”。

这个令人沮丧的问题通常在安装应用程序服务器(如 Web 服务器、电子邮件服务器、ssh 服务器、Samba 服务器等)后遇到,并且由于某种原因,客户端无法连接到服务器。

telnet不会解决问题,但它会很快缩小你需要开始寻找解决问题的范围。

telnet是用于调试网络相关问题的非常简单的命令,语法如下:

telnet  

因为telnet最初会简单地建立到端口的连接而不发送任何数据,所以它可以用于几乎任何协议,包括加密协议。

尝试连接到有问题的服务器时,会遇到四种主要错误。我们将研究这四个问题,探索它们的含义并了解你应该如何修复它们。

对于本指南,我们将假设我们刚刚在 上安装了一个Samba服务器samba.example.com,并且我们无法让本地客户端连接到该服务器。

1、错误 1 - 永远挂起的连接

首先,我们需要尝试连接到Samba服务器telnet。这是通过以下命令完成的(Samba 侦听端口 445):

telnet samba.example.com 445

有时,连接会到达这一点停止并无限期挂起:

telnet samba.example.com 445
Trying 172.31.25.31...

这意味着telnet尚未收到对其建立连接请求的任何响应。这可能有两个原因:

(1)你和服务器之间存在路由器故障;(2)有防火墙丢弃你的请求。

为了排除,快速运行mtr samba.example.com服务器。如果服务器是可访问的,那么它就是一个防火墙。

首先,使用以下命令检查服务器本身是否有任何防火墙规则iptables -L -v -n,如果没有,那么将获得以下输出:

iptables -L -v -n
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target     prot opt in     out     source               destination
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target     prot opt in     out     source               destination
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target     prot opt in     out     source               destination

如果你看到其他任何内容,则可能是问题所在。为了检查,先iptables一下,再跑telnet samba.example.com 445,看看能不能连上。如果仍然无法连接,请查看你的提供商和/或办公室是否设置了阻止防火墙。

2、错误 2 - DNS 问题

如果使用的主机名未解析为 IP 地址,则会出现 DNS 问题。你将看到的错误如下:

telnet samba.example.com 445
Server lookup failure:  samba.example.com:445, Name or service not known

这里的第一步是用服务器的 IP 地址代替主机名。如果你可以连接到 IP 但不能连接到主机名,则问题出在主机名上。

发生这种情况的原因有很多(我已经看到了以下所有原因):

(1)域名是否已注册?使用whois以查明是否。

(2)域名过期了吗?使用whois以查明是否。

(3)使用的主机名是否正确?使用digorhost确保使用的主机名解析为正确的 IP。

(4)你的A记录正确吗?检查是否不小心为诸如 Asmaba.example.com 之类的内容创建了A记录。

始终仔细检查拼写和正确的主机名(是 itsamba.example.com还是samba1.example.com),因为这通常会让你感到困惑,尤其是长的、复杂的或外国的主机名。

3、错误 3 - 服务器未在该端口上侦听

telnet当能够访问服务器但没有任何内容在你指定的端口上侦听时,会发生此错误。错误如下所示:

telnet samba.example.com 445
Trying 172.31.25.31...
telnet: Unable to connect to remote host: Connection refused

发生这种情况可能有以下几个原因:

(1)你确定要连接到正确的服务器吗?

(2)你的应用程序服务器没有在你认为是的端口上侦听。通过在服务器上运行来检查它到底在做什么netstat -plunt,看看它实际上在监听什么端口。

(3)应用程序服务器未运行。当应用程序服务器在你启动后立即安静地退出时,就会发生这种情况。启动服务器并运行ps auxf或systemctl status application.service检查它是否正在运行。

4、错误 4 - 连接被服务器关闭

当连接成功时会发生此错误,但应用程序服务器具有内置的安全措施,会在连接建立后立即终止连接。这个错误看起来像:

telnet samba.example.com 445
Trying 172.31.25.31...
Connected to samba.example.com.
Escape character is '^]'.
Connection closed by foreign host.

最后一行Connection closed by foreign host.表示:连接已被服务器主动终止。为了解决这个问题,需要查看应用服务器的安全配置,以确保 IP 或用户可以连接到它。

5、连接成功

这是成功的telnet连接尝试的样子:

telnet samba.example.com 445
Trying 172.31.25.31...
Connected to samba.example.com.
Escape character is '^]'.

连接将保持打开状态一段时间,具体取决于所连接的应用程序服务器的超时时间。

通过键入关闭telnet连接CTRL+],然后当看到telnet>提示时,键入“quit”并按ENTER 键,即:

telnet samba.example.com 445
Trying 172.31.25.31...
Connected to samba.example.com.
Escape character is '^]'.
^]
telnet> quit
Connection closed.

6、结论

客户端应用程序无法连接到服务器的原因有很多。确切的原因可能很难确定,尤其是当客户端是提供很少或不提供错误信息的GUI时。使用telnet和观察输出将能够非常迅速地缩小问题所在范围并节省大量时间。

原文链接:https://bash-prompt.net/guides/telnet/

来源:51CTO技术栈内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯