SSH 端口转发

简介

SSH 端口转发(也称为 SSH 隧道)是一种通过加密的 SSH 连接在两台计算机之间转发网络流量的方法。这对于绕过防火墙、访问内部网络资源或加密不安全的协议非常有用。


本地端口转发

本地端口转发允许您将本地计算机上的端口映射到远程服务器可以访问的目标服务器上的端口。

命令格式:

1
ssh -L [本地地址:]本地端口:目标地址:目标端口 [用户名]@[SSH服务器地址]
  • [本地地址:]:可选,默认为 127.0.0.1localhost,表示只有本机可以访问该转发端口。使用 0.0.0.0 可以允许其他计算机访问。
  • 本地端口:在您的本地计算机上打开的端口。
  • 目标地址:您希望通过 SSH 服务器连接的最终目标服务器的地址。
  • 目标端口:目标服务器上的端口。
  • [用户名]@[SSH服务器地址]:您的 SSH 服务器的凭据。

示例:

1
ssh -L 8080:www.example.com:80 [email protected]

这个命令会将本地 8080 端口的流量,通过 your-ssh-server.com 转发到 www.example.com80 端口。当您在浏览器中访问 http://localhost:8080 时,您实际上看到的是 http://www.example.com 的内容。


远程端口转发

远程端口转发允许您将远程 SSH 服务器上的端口映射到您本地计算机或本地网络中其他计算机上的端口。这对于将内部服务暴露给外部网络非常有用。

命令格式:

1
ssh -R [远程服务器地址:]远程服务器端口:本机地址:本机端口 [用户名]@[远程服务器地址]
  • [远程服务器地址:]:可选,在远程服务器上绑定的地址。默认情况下,只有远程服务器本身可以访问该端口。
  • 远程服务器端口:在远程 SSH 服务器上打开的端口。
  • 本机地址:您本地计算机的地址。
  • 本机端口:您本地计算机上正在运行服务的端口。
  • [用户名]@[远程服务器地址]:您的 SSH 服务器的凭据。

示例:

1
ssh -R 8080:localhost:3000 [email protected]

这个命令会将远程服务器 your-ssh-server.com 上的 8080 端口的流量,转发到您本地计算机的 3000 端口。这对于向他人临时展示您本地开发的 web 应用非常有用。