本地IP转发和远程IP转发有什么区别?

nan*_*loo 12 ssh ssh-tunnel

两者在功能上有什么区别?我有点困惑。

本地转发使远程端口在本地可用。

远程转发使本地端口远程可用。

但是这种“可用性”将在两个方向上起作用......或者是吗?

例如以下(从主机“家”发出)

ssh -R 1234:localhost:2345 user@work
Run Code Online (Sandbox Code Playgroud)

这将在 work::1234 和 home::2345 之间建立安全隧道,对吗?

如果我在一端放入任何东西,它就会从另一端出来。

但是,我可以通过来自主机“工作”的以下调用来实现相同的目的:

ssh -L 1234:localhost:2345 user@home
Run Code Online (Sandbox Code Playgroud)

所以,唯一的区别是我从哪里调用它,对吗?

0x4*_*672 10

是的,如果我理解正确的话,从 a 到 b 的本地端口转发应该与从 b 到 a 的远程端口转发相同(反之亦然)。从 a 到 b 的传出隧道(从 a 看)应该等于从 a 到 b 的传入隧道(从 b 看)。

本地端口转发创建一个传出隧道,可用于将公共 Internet 计算机连接到本地计算机。本地用户可以访问本地主机上的远程主机:端口组合,因为本地(客户端)主机上的给定端口被转发到远程端的给定主机和端口:

ssh -L local_port:remote_host:remote_port user@hostname
Run Code Online (Sandbox Code Playgroud)

远程端口转发创建一个传入隧道,可用于将本地计算机带入公共互联网。Internet 用户可以访问远程主机上的某个本地主机:端口组合。远程(服务器)主机上的给定端口被转发到本地端的给定主机和端口:

ssh -R local_port:remote_host:remote_port user@hostname
Run Code Online (Sandbox Code Playgroud)


bar*_*lop 4

主要的实际区别是,如果连接 2 台计算机 A 和 B,并且 B 位于您无法控制的防火墙或 NAT 路由器后面,并且它会阻止传入。您坐在 A 处。您无法访问 A连接到 B。但是 B 不会阻止传出。所以你让 B 连接到 A。

--补充说明--

以上,提问者所理解的..意味着本地转发和远程转发之间的主要实际区别。ssh -L 和 ssh -R 当您使用它们时。我没有评论他给出的具体示例命令,他在哪里切换 -L 和 -R,以及他连接到哪个 sshd 服务器。但现在我将尝试对此进行评论.. 使用他给出的 ssh 命令,从常规客户端和常规服务器的角度来看,似乎没有区别,因为它没有说“啊,这是一个 ssh 客户端,并且这是一个 ssh 服务器..”它不知道 ssh ,并且 ssh 的客户端/服务器方面与常规客户端和常规服务器无关且未知。他们只关心谁在听,从他们的角度来看,看起来都是一样的。工作计算机正在侦听并且位于 1234 上。他们没有注意到在一种情况下它是 sshd.exe ssh 服务器,而在另一种情况下它是 ssh.exe、ssh 客户端。顺便说一句,ssh 客户端所在的位置被视为本地。