为什么 ssh -R 允许端口“0”但 ssh -L 需要端口号?

Leo*_*cci 7 networking linux ssh port-forwarding ubuntu

为什么 withssh -R可以通过指定“0”来分配空闲端口,而 with 则ssh -L需要指定有效的空闲端口?

\n

我希望 ssh 使用本地自由端口转发远程流量,而不依赖于自由端口黑客

\n

来自手册页

\n
\n

-R [绑定地址:]端口:主机:主机端口

\n

如果端口参数为\xe2\x80\x980\xe2\x80\x99,监听端口将在服务器上动态分配并在运行时报告给客户端。

\n
\n

但 -L 不提供这种可能性:(

\n
\n

-L [绑定地址:]端口:主机:主机端口

\n

指定本地(客户端)主机上的给定端口将转发到远程端的给定主机和端口......

\n
\n

Dan*_*scu 1

SSH 将绑定到 L 指定的端口并侦听它以查找发起连接的任意客户端(以及对于已建立的连接上的数据包,将它们转发到远程服务器,但这与此问题的上下文无关)。

为了启动连接,客户端必须指定服务器侦听此类请求的端口号。如果任意选择此类端口,则客户端不知道它,因此无法发起连接。

因为-R这不是问题,因为远程服务器不会接受除来自本地服务器(从参数中知道端口号-R)之外的该端口上的任何连接。

建立初始连接后,客户端和服务器可以针对实际流量协商(因此已知)其他动态分配的端口。