普通 Linux 用户了解 SSH,因为它基本上允许他们远程连接到任何服务器,以便能够通过命令行对其进行管理。 然而,这不是 SSH 可以为您提供的唯一功能,即使默认情况下没有加密,它也可以作为一个很好的安全工具来加密您的连接。
为了 example,假设您有一个远程 Linux 桌面,您希望通过它进行连接 SMTP 或电子邮件,但该网络上的防火墙当前阻止了非常常见的 SMTP 端口 (25)。 通过 SSH 隧道,您只需使用 SSH 即可使用另一个端口连接到该特定 SMTP 服务,而无需将 SMTP 配置重新配置到不同的端口,并且最重要的是,获得 SSH 的加密功能。
为端口转发配置 OpenSSH
为了 开放SSH 服务器要允许转发,您必须确保它在配置中处于活动状态。 为此,您必须编辑 /etc/ssh/ssh_config 文件。
对于 Ubuntu 18.04,这个文件有一点改变,所以你必须取消注释其中的一行:
取消注释后,您需要重新启动 SSH 服务以应用更改:
现在我们已经将目标配置为允许 SSH 转发,我们只需要通过我们知道未被阻塞的端口重新路由事物。 让我们使用一个非常罕见的阻塞端口,例如 3300:

所以现在我们已经这样做了,所有来自端口 25 的流量都将自动发送到端口 3300。从另一台计算机或客户端,我们只需将该服务器连接到它的端口 3300,然后我们就可以与它进行交互是 SMTP 服务器对其 25 端口没有任何防火墙限制,基本上我们只需将其端口 25 流量重新路由到另一个(非阻塞)端口即可访问它。
另一种方式:远程转发
我们讨论了将本地端口转发到另一个端口,但假设您想要完全相反:您想要将远程端口或您当前可以从服务器访问的东西路由到本地端口。
为了方便解释,让我们使用 example 与上一个类似:从该服务器,您通过端口 25 (SMTP) 访问特定服务器,并且您希望通过本地端口 3302 “共享”该服务器,以便其他人可以连接到您的服务器到 3302 端口并查看该服务器的任何内容在端口 25 上看到:

SSH端口转发的总结和一些技巧
如您所见,这个 SSH 转发就像一个非常小的 VPN,因为它将事物路由到给定的端口。 每当您执行这些命令时,它们都会打开 SSH shell,因为它知道您需要通过 SSH 与服务器交互。 如果您不需要它,只需在其中添加“-N”选项就足够了,这样它们就不会打开任何外壳。