
你可能已经熟悉使用 ssh 命令访问远程系统。ssh
命令背后所使用的协议允许终端的输入和输出流经安全通道。但是你知道也可以使用 ssh
来安全地发送和接收其他数据吗?一种方法是使用“端口转发port forwarding”,它允许你在进行 ssh
会话时安全地连接网络端口。本文向你展示了它是如何工作的。
关于端口
标准 Linux 系统已分配了一组网络端口,范围是 0 – 65535。系统会保留 0 – 1023 的端口以供系统使用。在许多系统中,你不能选择使用这些低端口号。通常有几个端口用于运行特定的服务。你可以在系统的 /etc/services
文件中找到这些定义。
你可以认为网络端口是类似的物理端口或可以连接到电缆的插孔。端口可以连接到系统上的某种服务,类似物理插孔后面的接线。一个例子是 Apache Web 服务器(也称为 httpd
)。对于 HTTP 非安全连接,Web 服务器通常要求在主机系统上使用端口 80,对于 HTTPS 安全连接通常要求使用 443。
当你连接到远程系统(例如,使用 Web 浏览器)时,你是将浏览器“连接”到你的主机上的端口。这通常是一个随机的高端口号,例如 54001。你的主机上的端口连接到远程主机上的端口(例如 443)来访问其安全的 Web 服务器。
那么,当你有这么多可用端口时,为什么还要使用端口转发呢?这是 Web 开发人员生活中的几种常见情况。