Mon*_*ney 4 linux command-line networking webserver telnet
我想知道是否有必要在机器两端都启用telnet才能获得telnet连接。
问题是:我正在尝试从 Linux Web 服务器(Red Hat)在端口 80 上 telnet 一些公共 IP。
此公共 IP 已启用 HTTP (80)。我不确定是否启用了 telnet,但所有者说启用了。
在我的 Linux 服务器上,启用了 HTTP (80) 但未启用 telnet。而是启用了 SSH。
当我从我的 Linux 服务器 telnet 时:telnet PublicIP 80它说:
Trying "PublicIP"...
Connected to "PublicIP" ("PublicIP").
Escape character is '^]'.
Connection closed by foreign hostRun Code Online (Sandbox Code Playgroud)
是否必须在我的服务器上启用 telnet 才能工作?因为其他消息来源证实,另一端没有问题。公网IP:220.226.190.180
请解释我如何使它工作。如果我必须在我的 Linux 服务器上启用 telnet,请分享执行此操作的命令和方法。
您正在尝试使用telnet? 那么,不:您不需要 telnet 服务器。远程 HTTP 服务器正在等待命令,如转义字符所示。当等待超时时,连接将关闭。所以...
telnet <hostname or ip address> 80
然后输入一些 HTTP 命令:
GET / HTTP/1.1
host: <fqdn>
Run Code Online (Sandbox Code Playgroud)
使用远程 Web 服务器已配置为提供服务的主机的 FQDN。它将返回带有上述 HTTP 命令的默认文档。请注意 0xAF 的准确注释。
小智 5
在第一句话中回答您的问题:Telnet 是两件事:服务器端应用程序(守护进程)和客户端应用程序。
当 telnet 服务器运行时,计算机会在 TCP 端口 23 上侦听来自 telnet 客户端的连接。
telnet 客户端不侦听任何端口,而是尝试连接到计算机上的 TCP 端口 23(默认情况下)。如果连接正确,则可能会提示用户登录,然后进行交互式 shell 会话。因为 telnet 默认使用未加密的纯文本(包括您的密码!)进行通信,所以不推荐这样做。
但是,正如 Christopher 在他的出色回答中所说,如果您真的想使用 telnet 测试 http 服务器,则可以使用 telnet 程序,并且不需要 telnet 服务器。
telnet 客户端程序可用于连接到默认端口 23 以外的其他 TCP 端口。
telnet <hostname> <TCP port>
Run Code Online (Sandbox Code Playgroud)
因为http服务器通常监听80端口,所以可以使用telnet程序连接到80端口,看看http服务器连接时向浏览器发送了什么:
telnet google.com 80
Run Code Online (Sandbox Code Playgroud)
这将连接,但您必须输入以下文本,这只是一个简单的 http 请求(大小写很重要):
GET / HTTP/1.1
host: test.com
Run Code Online (Sandbox Code Playgroud)
然后按两次回车。
然后,您将看到 google 提供给浏览器的所有原始 html。您可以使用相同的概念来测试您自己的 http 服务器。