三种不同类型的ssh隧道

简介: 想通过ssh隧道连接远端机器的VNC服务,对ssh -L命令不太熟悉,man ssh后发现3组与隧道(turnnel)相关的参数:ssh -D,ssh -L,ssh -R,一下子就搞糊涂了,所有下决心仔细研究一番。何谓SSH隧道隧道是一种把一种网络协议封装进另外一种网络协议进行传输的技术。这里我们研究ssh隧道,所以所有的网络通讯都是加密的。又被称作端口转发,因为ssh隧道通常会绑定一个本地端口,所有发向这个端口端口的数据包,都会被加密并透明地传输到远端系统。SSH隧道的类型ssh隧道有3种类型:动态端口转发(Socks 代理)本地端口转发远端端口转发动态端口转发

想通过ssh隧道连接远端机器的VNC服务,对ssh -L命令不太熟悉,man ssh后发现3组与隧道(turnnel)相关的参数:ssh -D,ssh -L,ssh -R,一下子就搞糊涂了,所有下决心仔细研究一番。

何谓SSH隧道
隧道是一种把一种网络协议封装进另外一种网络协议进行传输的技术。这里我们研究ssh隧道,所以所有的网络通讯都是加密的。又被称作端口转发,因为ssh隧道通常会绑定一个本地端口,所有发向这个端口端口的数据包,都会被加密并透明地传输到远端系统。

SSH隧道的类型
ssh隧道有3种类型:

动态端口转发(Socks 代理)

本地端口转发

远端端口转发

动态端口转发
动态端口允许通过配置一个本地端口,把通过隧道到数据转发到远端的所有地址。本地的应用程序需要使用Socks协议与本地端口通讯。此时SSH充当Socks代理服务器的角色。

命令格式

ssh -D [bind_address:]port
参数说明

bind_address 指定绑定的IP地址,默认情况会绑定在本地的回环地址(即127.0.0.1),如果空值或者为*会绑定本地所有的IP地址,如果希望绑定的端口仅供本机使用,可以指定为localhost。

port 指定本地绑定的端口

使用场景

假设X网络(192.168.18.0/24)有主机A(192.168.18.100),Y网络(192.168.2.0/24)有主机B(192.168.2.100)和主机C(192.168.2.101),已知主机A可以连接主机B,但无法连接主机C。

在主机A执行

$ ssh -D localhost:8080 root@192.168.2.100
然后主机A上的应用程序就可以通过

SOCKS5 localhost:8080
访问主机C上的服务。

优点

配置一个代理服务就可以访问远端机器和与其所在子网络的所有服务

缺点

应用程序需要额外配置SOCKS代理,若应用程序不支持代理配置则无法使用

本地端口转发
通过SSH隧道,将一个远端机器能够访问到的地址和端口,映射为一个本地的端口。

本地端口转发

命令格式

ssh -L [bind_address:]port:host:hostport
参数说明

bind_address 指定绑定的IP地址,默认情况会绑定在本地的回环地址(即127.0.0.1),如果空值或者为*会绑定本地所有的IP地址,如果希望绑定的端口仅供本机使用,可以指定为localhost。

port 指定本地绑定的端口

host 指定数据包转发目标地址的IP,如果目标主机和ssh server是同一台主机时该手机游戏卖号平台参数指定为localhost

host_port 指定数据包转发目标端口

使用场景

假设X网络(192.168.18.0/24)有主机A(192.168.18.100),Y网络(192.168.2.0/24)有主机B(192.168.2.100)和主机C(192.168.2.101),已知主机A可以连接主机B,但无法连接主机C。A主机需要访问C主机的VNC服务(5900端口)

在A主机上建立本地转发端口5901

$ ssh -L 5901:192.168.2.101:5900 root@192.168.2.100
然后本地vnc客户端通过5901端口打开c主机的vnc服务

$ open vnc://localhost:5901
优点

无需设置代理

缺点

每个服务都需要配置不同的端口转发

远端端口转发
远程端口转发用于某些单向阻隔的内网环境,比如说NAT,网络防火墙。在NAT设备之后的内网主机可以直接访问公网主机,但外网主机却无法访问内网主机的服务。如果内网主机向外网主机建立一个远程转发端口,就可以让外网主机通过该端口访问该内网主机的服务。可以把这个内网主机理解为“内应”和“开门者”。

远端端口转发

命令格式

ssh -R [bind_address:]port:host:hostport
参数说明

bind_address 指定绑定的IP地址,默认情况会绑定在本地的回环地址(即127.0.0.1),如果空值或者为*会绑定本地所有的IP地址,如果希望绑定的端口仅供本机使用,可以指定为localhost。

port 指定本地绑定的端口

host 指定数据包转发源地址的IP,如果源主机和ssh server是同一台主机时该参数指定为localhost

host_port 指定数据包转发源端口

使用场景

假设X网络(192.168.18.0/24)有主机A(192.168.18.100),Y网络(192.168.2.0/24)有主机B(192.168.2.100)和主机C(192.168.2.101),已知主机A可以通过SSH访问登录B主机,但反向直接连接被禁止,主机B和主机C可以相互访问。若主机C想访问主机A的VNC服务(5900端口)。

在主机A执行如下命令,开放B主机远端端口转发。

$ ssh -R 5900:192.168.2.100:5901 root@192.168.2.100
然后主机C连接主机B的5901端口

$ open vnc://192.168.2.100:5901
优点

可以穿越防火墙和NAT设备

缺点

每个服务都需要配置不同的端口转发

如何禁止端口转发
设置ssh服务配置文件/etc/ssh/sshd_config

AllowTcpForwarding no

目录
相关文章
|
存储 算法 数据挖掘
行式存储和列式存储的区别
行式存储和列式存储的区别
2203 0
|
安全 Linux 网络安全
|
存储 监控 数据可视化
开发者如何使用日志服务 SLS
【10月更文挑战第17天】开发者如何使用日志服务 SLS
3272 4
|
人工智能 安全 Apache
QwenPaw:你的私人 AI 助理 —— 数据归你、记忆进化、多端触达的开源个人智能体
QwenPaw 是一款开源、本地优先的AI个人智能体(Apache 2.0),数据归属用户、记忆自主进化、支持钉钉/飞书/微信等多端触达。3行命令即可部署,内置Coding IDE、Persona人格、定时任务、MCP工具生态与多Agent协作,真正属于你的私有AI助理。
QwenPaw:你的私人 AI 助理 —— 数据归你、记忆进化、多端触达的开源个人智能体
|
9月前
|
数据采集 机器学习/深度学习 人工智能
什么是跨境电商采集器?一文带你看懂,从工具入门到场景案例!
跨境电商采集器是卖家抢占市场的秘密武器,可自动采集多平台商品数据,助力精准选品、竞品监控与批量上货。融合AI与RPA技术,实现全流程智能运营,提升效率,驱动增长,已成为全球化电商竞争的必备利器。
524 9
|
3月前
|
人工智能 小程序 前端开发
AI开发实战4、AI总是忘记项目规范?因为你缺了这份终极上下文文件
本文是AI编程实战系列第4篇,聚焦前端开发,详解如何用`CLAUDE.md`(AI专属项目指南)提升AI编码准确性与一致性——涵盖上下文构建、规范统一、效率提升与幻觉抑制。下篇将切入go-zero后端接口开发。(239字)
748 0
AI开发实战4、AI总是忘记项目规范?因为你缺了这份终极上下文文件
|
Kubernetes Shell 容器
starting container process caused “exec: \“/bin/bash\“: stat /bin/bash: no such file or directory
starting container process caused “exec: \“/bin/bash\“: stat /bin/bash: no such file or directory
772 0
|
消息中间件 存储 编解码
Elastic Stack初篇-Logstash
Logstash是一个开源数据收集引擎,具有实时管道功能。Logstash可以动态地将来自不同数据源的数据统一起来,并将数据标准化到你所选择的目的地。
Elastic Stack初篇-Logstash
|
4月前
|
存储 安全 API
OpenClaw(Clawdbot)阿里云及本地搭建保姆级流程:接入安全防护Skill Semgrep实战指南
随着OpenClaw(Clawdbot)功能的不断强大,其安全风险也日益凸显。2026年,ClawHavoc事件中暴露1184个恶意Skill,这些插件伪装成正常工具,实则窃取API密钥、注入恶意指令;Moltbook平台更是泄露35000个邮箱与150万个API Token,而MCP架构设计的权限漏洞,让扩展直接拥有系统级权限,进一步放大了攻击面。
935 7

热门文章

最新文章