问题描述
当我们使用网络浏览器使用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/