Skip to content

SSH隧道代理

本地端口转发

用途:将本地端口的流量转发到远程服务器的目标端口。 场景:访问被封锁的远程服务(如内网网站)。

命令格式

ssh -L [本地IP:]本地端口:目标服务主机:目标服务端口 远程服务器用户@远程服务器IP

示例: 假设远程服务器 192.168.1.100 可以访问内网网站 10.0.0.1:80,但你的本地机器无法直接访问。通过以下命令将本地 8080 端口的流量转发到内网网站:

ssh -L 8080:10.0.0.1:80 user@192.168.1.100

之后,在本地浏览器访问 http://localhost:8080 即可查看内网网站内容。

远程端口转发

用途:将远程服务器的端口流量转发到本地主机的目标端口。 场景:从外网访问内网中的本地服务(如在家访问公司内网的开发服务器)。

命令格式

ssh -R [远程IP:]远程端口:本地主机:本地端口 远程服务器用户@远程服务器IP

示例: 假设你在内网的本地机器 10.0.0.2 上运行了一个 Web 服务(端口 8000),需要通过公网服务器 45.67.89.100 访问。在内网机器上执行:

ssh -R 8080:localhost:8000 user@45.67.89.100

之后,在公网通过 http://45.67.89.100:8080 即可访问内网服务。

动态端口转发

用途:创建一个 SOCKS 代理服务器,将所有流量通过 SSH 隧道转发。 场景:全局代理访问被封锁的网络资源(如绕过防火墙限制)。

命令格式

ssh -D [本地IP:]本地端口 远程服务器用户@远程服务器IP

示例: 创建一个本地 SOCKS5 代理(端口 1080):

ssh -D 1080 user@45.67.89.100

配置浏览器或应用程序使用 SOCKS5 代理(地址:localhost,端口:1080),所有流量将通过 SSH 隧道加密传输。

常用选项

  • -N:不执行远程命令,仅用于转发端口。
  • -f:后台运行 SSH 进程。
  • -C:启用压缩,减少数据传输量。
  • -v:显示详细的连接信息(调试用)。