Linux 服务器上的 Telnet

Linux 服务器上的 Telnet

我想知道是否需要在机器两侧都启用 telnet 才能获得 telnet 连接。

问题是这样的:我正在尝试从 Linux Web 服务器(Red Hat)在端口 80 上远程登录一些公共 IP。

此公共 IP 已启用 HTTP (80)。我不确定是否启用了 telnet,但所有者说是。

在我的 Linux 服务器上,启用了 HTTP (80),但未启用 telnet。相反,SSH 已启用。

当我从 Linux 服务器远程登录时:telnet PublicIP 80它说:

Trying "PublicIP"...
Connected to "PublicIP" ("PublicIP").
Escape character is '^]'.
Connection closed by foreign host

是否必须在我的服务器上启用 telnet 才能正常工作?因为经其他消息来源证实,另一端没有问题。公网IP:220.226.190.180

请解释一下我怎样才能让它发挥作用。如果我必须在我的 Linux 服务器上启用 telnet,请分享命令和方法。

答案1

telnet您正在尝试使用?测试与远程 Web 服务器的连接。那么,不:您不需要 telnet 服务器。远程 HTTP 服务器正在等待命令,如转义字符所示。当等待超时时,连接被关闭。所以...

telnet <hostname or ip address> 80

然后输入一些 HTTP 命令:

GET / HTTP/1.1
host: <fqdn>

使用已配置远程 Web 服务器来提供服务的主机的 FQDN。它将使用上面的 HTTP 命令返回默认文档。请注意0​​xAF的准确评论。

答案2

回答第一句中的问题: Telnet 是两个东西:服务器端应用程序(守护程序)和客户端应用程序。

当 telnet 服务器运行时,计算机正在 TCP 端口 23 上侦听来自 telnet 客户端的连接。

telnet 客户端不会侦听任何端口,而是尝试连接到计算机上的 TCP 端口 23(默认情况下)。如果连接正确,系统可能会提示用户登录,然后进行交互式 shell 会话。由于 telnet 默认情况下使用纯文本、未加密文本(包括您的密码!)进行通信,因此不建议这样做。

然而,正如 Christopher 在他的出色回答中所说,如果您确实想使用 telnet 测试 http 服务器,则可以使用 telnet 程序,并且不需要 telnet 服务器。

telnet 客户端程序可用于连接到除默认端口 23 之外的其他 TCP 端口。

telnet <hostname> <TCP port>

由于http服务器通常监听80端口,因此您可以使用telnet程序连接到80端口,并查看连接时http服务器向浏览器发送的内容:

telnet google.com 80

这将连接,但您必须输入以下文本,这只是一个简单的 http 请求(大小写很重要):

GET / HTTP/1.1
host: test.com

然后按两次 Enter 键。

然后您将看到 google 向浏览器提供的所有原始 html。您可以使用相同的概念来测试您自己的 http 服务器。

答案3

telnet可用于测试 HTTP 协议,但有更适合该任务的工具。我个人推荐curl。它本质上是一个命令行实用程序,能够与各种协议(HTTP、HTTPS、FTP...)进行交互。使用curl而不是telnet测试 HTTP 服务器将使您不必手动键入 HTTP 请求,并且它将为您提供更多总体信息。您可能会发现对您当前情况有用的一些功能是:

使用 HTTP 连接到主机并请求默认文档:

curl <public ip>

使用 HTTP 连接到主机并仅查看 HTTP 标头:

curl -I <public ip>

使用 HTTP 连接到主机,仅查看 HTTP 标头并遵循 3xx 重定向:

curl -LI <public ip>

curl实际上有几十种选择。我建议使用curl --help快速摘要和man curl/或curl --manual更详细的信息。

答案4

如果您没有 telnet 或 curl,您还可以使用 cat 和 proc dir 连接端口:

cat < /dev/tcp/HOST/PORT

摘自这篇文章(西班牙语)

相关内容