我使用telnet
端口 25。
例子:telnet x.x.x.x 25
我今天有另一台服务器改用端口 23。对于未来,如何轻松知道要使用哪个端口?这个端口是否会从 25/23 更改?我可以通过 SSH 访问服务器。
我正在跟进因此远的。
答案1
Telnet 本质上只是打开一个原始TCP套接字。因此,任何接受 TCP 连接的端口都允许您使用 telnet 进行连接(如果您随后没有正确及时地进行协商,则有时会很短暂)。
其中包括SSH顺便说一下,默认情况下在端口 22 上运行的服务,但由于这不是纯文本协议(例如端口 23 上的 telnet 服务或端口 25 上的 SMTP),因此您无法在连接后手动在套接字中输入字符并期望它工作 - 它只会是乱码。
在了解在给定服务器上尝试哪些端口时,首先你需要小心 - 扫描不属于你的机器上的开放端口可能会让你与该机器的所有者产生矛盾,并且可能会触发警报入侵检测系统。毕竟,这就是黑客试图“追踪”主机以确定其上运行程序的方式。没有简单的方法可以区分这种类型的扫描和相对无害的扫描,所以要小心。
如果你拥有这台机器,或者确信你寻找机器上的开放端口没有问题,那么你可以使用类似nmap(还有其他的)来弄清楚你可以连接什么。
在提前知道要连接的端口或弄清楚某个开放端口可能做什么方面,港口分配官方登记是第一个访问端口。通常,您的主机上也会有此文件的本地版本 - 对于 Unix/Linux 系统,您可以在中找到此文件;/etc/services
对于 Windows,它将类似于C:\Windows\System32\drivers\etc\services
。请注意,这些本地副本通常可能非常陈旧。
还值得注意的是,您可以在任何端口上运行服务,这些只是已注册的默认端口。有些服务根本没有注册。在其他情况下,管理员可能会在非标准端口上运行服务,只是为了避免明显的端口扫描(例如在端口 722 上运行 ssh)。理论上,您可以在端口 22 上运行 Web 服务器,然后将浏览器指向它,http://server:22/
它就会工作,但您为什么要这样做呢?(除了可能绕过防火墙)。
这使得 HTTP 值得一提 - 您可以远程登录到端口 80(http 默认端口)并以纯文本形式发出简单命令,就像浏览器一样。它曾经像发送一样简单,GET /
但那是在 HTTP 1.0 时代,现在它有点(但不是很多)复杂:
$ telnet superuser.com 80
Trying 198.252.206.16...
Connected to superuser.com.
Escape character is '^]'.
GET / HTTP/1.1
Host: superuser.com
HTTP/1.1 200 OK
Cache-Control: public, no-cache="Set-Cookie", max-age=14
Content-Type: text/html; charset=utf-8
Expires: Thu, 31 Jul 2014 18:04:39 GMT
Last-Modified: Thu, 31 Jul 2014 18:03:39 GMT
Vary: *
X-Frame-Options: SAMEORIGIN
Set-Cookie: prov=d901880d-730c-4d91-9ac9-7d81d84fe58a; domain=.superuser.com; expires=Fri, 01-Jan-2055 00:00:00 GMT; path=/; HttpOnly
Date: Thu, 31 Jul 2014 18:04:24 GMT
Content-Length: 69500
<!DOCTYPE html>
为了简洁起见,我截断了其余部分。