ssh的代理和端口转发机制介绍

本文介绍通过ssh建立隧道的三种方式。

ssh的隧道均通过端口转发来实现,包括三种模式:

  • 本地端口转发,使用-L参数
  • 远程端口转发,使用-R参数
  • 动态端口转发,使用-D参数

MobaXterm作为一个良心的终端工具,在其MobaSSHTunnel菜单项可以帮助我们基于图形化的方式建立上述三种隧道,其提供的向导也能帮助我们更有效的理解和记住上面这3个参数。因此本文借用这些向导中的截图来进行说明。

1. 本地端口转发(Local port forwarding)

实现功能:把ssh服务器能够访问的ip和端口映射到客户端的指定端口,这样在客户端网络内访问客户端的指定端口就能访问到ssh服务器所在网络中的服务。经常使用的场景是客户端自身通过localhost:<指定端口>去访问。

SSH-Local-Portforwarding.PNG
ssh -L <本地端口>:<目的地址>:<目的端口> <登陆用户>@<SSH服务器>

参数说明:

  • 本地端口为客户端的指定端口,运行了上述命令后,在ssh客户端上运行netstat -lutup可以看到这个端口被侦听。
  • 目的地址是相对于ssh服务器而言的,可以是localhost,此时表示ssh服务器本身。

2. 远程端口转发(Remote port forwarding)

实现功能:把ssh客户端能访问到的ip和端口映射到ssh服务器的指定端口,这样在服务器端的网络内访问服务器的指定端口就能访问到ssh客户端算在网络中的服务。

SSH-Remote-Portforwarding.PNG
ssh -R <远程端口>:<目的地址>:<目的端口> <登陆用户>@<SSH服务器>

参数说明:

  • 远程端口为服务器的指定端口,运行了上述命令后,在ssh服务器上运行netstat -lutup可以看到这个端口被侦听。
  • 目的地址是相对于ssh客户端而言的,可以是localhost,此时表示ssh客户端本身。

3. 动态端口转发(Dynamic port forwarding)

动态端口转发实际上是本地端口转发的升级版,除了建立本地端口转发之外,这种模式还在ssh的通信两端启动了socks5代理服务,并且通过本地端口转发机制把两个socks5代理连接在一起,因此当访问本地的socks5服务时实际上也是在访问远程的socks5服务。这样当指定客户端作为socks5代理之后,实际上相当于把客户端放入服务器端所在网络中,能够访问网络中的任意一个服务,而无需为每个服务(ip:端口)都配一次本地端口转发规则。

SSH-Dynamic-Portforwarding.PNG
ssh -D <本地端口> <登陆用户>@<SSH服务器>

参数说明:

  • 本地端口为客户端的指定端口,即socks5的代理端口。
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,850评论 19 139
  • 第一部分 概述当你在咖啡馆享受免费 WiFi 的时候,有没有想到可能有人正在窃取你的密码及隐私信息?当你发现实验室...
    fastjrun阅读 4,865评论 0 8
  • 实战 SSH 端口转发 通过本文的介绍,读者可以从中了解到如何应用 SSH 端口转发机制来解决日常工作 / 生活中...
    hopevow阅读 4,652评论 0 9
  • 好种子开花结果: 1.同事和我一起购买谷蔬收米594元,感恩同事的信任,也愿意把健康和美丽分享给更多的人。 2.玉...
    梦的飞扬阅读 1,301评论 0 0
  • 玉封千载,睁睨目,少年惊鸿顾。 图江山一眸,化红尘幕幕,不过妖邪路。 青丝何曾手中寄?弄杨柳,相思苦。 焉怕凡尘误...
    咸柠乐阅读 3,339评论 0 1

友情链接更多精彩内容