哪个本地端口用于 http 或 ssh 协议?

问题描述

当我们使用网络浏览器使用google时,我们在网络浏览器中输入www.google.com。我知道它等于 www.google.com:80,因为 http 协议中的认端口号是 80

当我们使用 ssh 将本地 PC 连接到远程服务器时,我们使用 ssh user@remote,它等于 ssh user@remote -p 22,因为 {{} 中的认端口号是 22 1}} 协议。

我的第一个问题是: 认端口号是 http 中的 ssh 还是 ssh 本地 端口或 远程 端口中的 80

我猜答案是:远程端口。因为如果我们使用 severl 22 命令将我们的本地 PC 连接到几个不同的远程服务器,认端口总是 ssh。如果我们使用多个网络浏览器来 google 某些东西,认端口号总是 22

我的第二个问题是: 如果我们使用 severl 80 命令将我们的本地 PC 连接到几个不同的远程服务器,那么不同 ssh 会话的 local port number 是什么?如果我们使用服务器网络浏览器将本地 PC 连接到 ssh,不同网络浏览器的 www.google.com 是什么?

解决方法

22 仅与远程端口有关。

您不能为 SSH 连接指定本地端口,但作为 detailed here,您可以使用 nc(或 netcat)实用程序作为代理:

ssh -p 33101 -o 'ProxyCommand nc -p 33101 %h %p' $SERVER_2

-o 参数允许 ssh 设置 ProxyCommand 选项,即:用于连接到服务器的命令('%h' 将被主机名替换为通过端口连接和“%p”)。

对于 HTTP 连接,您可以specify a local port directly using curl

本地端口号通常由网络堆栈随机分配给您的 TCP 连接,您通常不必进一步考虑。

获取这个HTTPS页面时要求curl使用4000到4200之间的本地端口号:

curl --local-port 4000-4200 https://example.com/