我最近看到了下面的片段。
ssh [email protected] -L <some_ip>:2182:127.0.0.1:2181
我以为我对端口转发已经很熟悉了,但是 的存在<some_ip>
让我感到困惑。有更有经验的人可以指导我吗确切地这段代码在做什么?
答案1
这是典型的本地端口转发,它将<some_ip>:2182
在本地计算机上侦听并将接收到的流量转发到127.0.0.1:2181
远程计算机上。虽然要绑定的本地 IP 地址通常未指定(默认为localhost
),但如果您希望监听某个 IP 地址,则可以明确给出该地址。特别的界面。
从man ssh
:
-L[绑定地址:]港口:主持人:主机端口
-L[绑定地址:]港口:远程套接字
-L 本地套接字:主持人:主机端口
-L 本地套接字:远程套接字
指定将本地(客户端)主机上给定 TCP 端口或 Unix 套接字的连接转发到远程端的给定主机和端口或 Unix 套接字。这是通过分配一个套接字来侦听 TCP 来实现的港口在本地端,可选地绑定到指定的绑定地址,或连接到 Unix 套接字。每当与本地端口或套接字建立连接时,该连接都会通过安全通道转发,并且会与任一端口建立连接 主持人港口主机端口,或 Unix 套接字远程套接字,来自远程机器。
端口转发也可以在配置文件中指定。只有超级用户才能转发特权端口。 IPv6 地址可以通过将地址括在方括号中来指定。
默认情况下,本地端口按照网关端口环境。然而,明确的绑定地址可用于将连接绑定到特定地址。这绑定地址“localhost”表示侦听端口仅限本地使用,而空地址或“*”表示该端口应可从所有接口使用。
答案2
如果由于目标地址是私有地址、本地主机或位于防火墙后面而无法直接到达,则需要(例如)SSH 端口转发。