点击参加51CTO网站内容调查问卷
策划 | 言征
Telnet、协议和命令行工具是系统管理员用来登录远程服务器的方式。然而,由于没有加密,包括密码在内的所有通信都以明文形式发送,这意味着几乎在SSH创建后就放弃了Telnet,转而使用SSH。
出于登录远程服务器的目的,你永远不应该也可能从未考虑过它。这并不意味着该telnet命令在用于调试远程连接问题时不是一个非常有用的工具。
在本指南中,我们将探索如何使用telnet来回答这个太常见的问题——“为什么我不能######连接?”。
这个令人沮丧的问题通常在安装应用程序服务器(如Web服务器、电子邮件服务器、ssh服务器、Samba服务器等)后遇到,并且由于某种原因,客户端无法连接到服务器。
telnet不会解决问题,但它会很快缩小你需要开始寻找解决问题的范围。
telnet是用于调试网络相关问题的非常简单的命令,语法如下:
telnet hostname or IP port
因为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,看看能不能连上。如果仍然无法连接,请查看你的提供商和/或办公室是否设置了阻止防火墙。