https://zaiste.net/ssh_port_forwarding/#remote-port-forwarding
远程端口转发是使用-R 参数创建的。
ssh -R source_port:forward_to_host:destination_port via_host
该命令连接到 via_host。 via_host 运行 SSH 服务器。然后,它将所有连接尝试转发到远程 via_host 计算机上的 source_portdestination_port 本地机器上的端口(发起 ssh 命令的机器)。 forward_to_host 计算机必须可从本地计算机访问。转发也可以通过 Unix 套接字完成。
“转发也可以通过 Unix 套接字完成”是什么意思?这是怎么做到的?
ssh远程端口转发不是通过Unix套接字完成的,而是通过Internet套接字完成的吗?
谢谢。
答案1
让我们看看真正的ssh(1)
手册页而不是那个网页:
-R [bind_address:]port:host:hostport
-R [bind_address:]port:local_socket
-R remote_socket:host:hostport
-R remote_socket:local_socket
该选项有四种形式-R
,您引用的是第一种形式。它将具有 SSH 连接远程端的系统上的 TCP 端口转发到指定主机,以及连接本地端的 TCP 端口号。
第二种形式描述了如何将远程 TCP 端口转发到本地 Unix 套接字:
ssh -R 1234:/tmp/local_socket user@remote_host
换句话说,当有东西连接到 TCP 端口 1234 时remote_host
,该连接将被转发到/tmp/local_socket
本地主机上的 Unix 套接字。
第三种形式描述了如何以相反的方式执行此操作,即远程套接字到本地端的 TCP 端口:
ssh -R /tmp/remote_socket:1234:somehost user@remote_host
这里,remote_host 上的进程可以使用 Unix 套接字/tmp/remote_socket
,并且连接将通过 SSH 连接传递到本地端,然后通过常规 TCP 连接传递到 的 TCP 端口 1234 somehost
。
第四种形式描述从远程 Unix 套接字转发到本地套接字:
ssh -R /tmp/remote_socket:/tmp/local_socket user@remote_host
在这里,进程remote_host
可以打开 Unix 套接字 at/tmp/remote_socket
以连接到/tmp/local_socket
本地主机。