我遇到的问题是尝试使用 ssh 命令了解端口转发的使用,如下所示。混淆是基于使用 localhost 我的机器是 localhost 但似乎它可能正在引用远程服务器。因此,目前尚不清楚发生了什么,因此我正在寻找可以阐明以下 ssh 命令中发生的情况的信息和/或文档链接。
ssh -f myUserID@someip -L [bind_address:]port:host:hostport
- 上面的详细信息取自手册:指定本地(客户端)主机上的给定端口将转发到远程端的给定主机和端口。
关于 ssh 命令,我被告知左侧被认为是本地(客户端)。
因此,使用以下语法
ssh -f myUserID@someip -L 1234:localhost:9200
如果左侧不包含 IP,则假定 localhost 位于端口 1234?
而且我不知道如何解释 localhost:9200 的后半部分?
我应该如何解释上面的 ssh 命令?
[ bind_address:]port:host:hostport 指定本地(客户端)主机上的给定端口将被转发到远程端的给定主机和端口。这通过分配一个套接字来侦听本地端的端口来工作,可选地绑定到指定的 bind_address。每当与此端口建立连接时,都会通过安全通道转发连接,并从远程计算机建立与主机端口 hostport 的连接。端口转发也可以在配置文件中指定。IPv6 地址可以使用另一种语法指定:[bind_address/]port/host/hostport 或将地址括在方括号中。只有超级用户可以转发特权端口。默认情况下,本地端口根据 GatewayPorts 设置进行绑定。然而,可以使用显式 bind_address 将连接绑定到特定地址。''localhost'' 的 bind_address 表示绑定监听端口仅供本地使用,而空地址或 '*' 表示该端口应可从所有接口使用。
我需要明确我发布的格式。因为定义的读取方式和命令的方式是我发布它听起来像是我将本地主机 1234 端口转发到本地主机 9200,这对于它如何允许我与远程服务器进行通信是零意义的.
-L1234:localhost:9200
-L
:执行本地转发(从本地客户端转发到远程)1234
: 在本地机器上监听 tcp/1234;您正在执行的那个ssh
localhost:9200
:转发流量的目的地。目的地是从目标机器的角度描述的(someip
在您的示例中为“”)。所以localhost
这里的意思是someip
, 并且9200
表示远程机器上的 tcp/9200 。您的本地计算机将接受端口 1234 上的连接,并将该流量通过隧道传输到远程主机上的端口 9200。
请注意,目的地可以是任何可以从远程访问的机器,而不仅仅是
localhost
从远程的角度来看。因此,如果您想将端口转发到可从本地机器访问someip
但不能(直接)从本地机器访问的机器,您可以使用如下参数我只是快速谷歌搜索并犯规......
https://www.howtogeek.com/168145/how-to-use-ssh-tunneling/
请阅读此内容并转到以下部分:
“远程端口转发:使本地资源在远程系统上可访问”
这正是您的命令正在执行的操作。
也许下次谷歌多一点。我只需要在搜索框中输入 ssh “-L”,所以 -L 的答案会回来。
此致
鲍勃