SSH端口转发(ssh隧道)
在打DarkHole2靶机的时候,使用到了ssh端口转发,在网上搜集了很多资料,特此记录下来,以便后续查找
ssh端口转发
- SSH 隧道
- 本地端口转发
- 远程端口转发
- 动态端口转发
当我们需要访问一台主机(host2)的某个端口,但我们使用的主机(host1)无法和它直接通信,与此同时还有一台主机(host3),它可以和host2进行通信,也开启了ssh服务,这时ssh端口转发就可以帮助我们突破网络隔离,实现host1对host2的访问
SSH 隧道
- ssh是一种应用层协议,它的传输层协议是tcp。
- 隧道是一种把一种网络协议封装进另外一种网络协议进行传输的技术。
- ssh隧道又被称作端口转发,通常会绑定一个本地端口,比如22端口,所有发向这个端口的数据包,都会被加密并透明地传输到远端系统。
本地端口转发
首先是daikhole2所用到的本地端口转发
host1可以和host3相互通信,host3可以和host2相互通信,但host1和host2之间不能直接通信
现在需要实现host1和host2之间的通信(前提是要知道host3的用户账号密码)
在host1上执行
ssh -fNg -L 6666:host2:80 host3
- -L 本地端口转发
- -f 后台转发
- -g 网关作用,让其它主机也能访问端口
- -N 不执行ssh远程指令
在这个例子里就是
ssh -fNg -L 6666:192.168.181.4:80 user@192.168.181.5
这样就可以在host1主机上使用127.0.0.1:6666访问到host2:80端口(具体连接方法下面介绍)
虽然此时可以访问host2,但是因为本地端口转发端口默认绑定的是回环地址,只能通过127.0.0.1或localhost访问,即使参数有-g,别的主机(host4)也无法通过host1的6666端口访问host2
所以需要使用bind_addr修改端口转发地址
最好的指令应该是这样的
ssh -fNg -L host1:6666:host2:80 host3
也就是
ssh -fNg -L 192.168.181.3:6666:192.168.181.4:80 user@192.168.181.5
将host2:80端口映射到host1:6666端口上,当host1或host4发起对192.168.181.3:6666端口的请求时,由于host1的ssh服务监听了6666端口,并且host2:80端口已经映射到host1:6666端口上(host1:6666:host2:80,映射端口),当host1接收到6666端口的数据包后,就会将数据包的目标地址和端口号替换为192.168.181.4:80,然后转发给host3,由host3代为访问host2:80。此时的host3就相当于一个跳板,作用就是转发host1对host2的请求
这样就实现了host1访问host2
如果要将host3的80端口映射到我们本机host1的8080端口,可以使用
ssh -L 8080:127.0.0.1:80 user@192.168.181.5
远程端口转发
接下来是远程端口转发,和下面的动态端口转发一样,都还没用到,只是顺便记录下来
host3可以和host2通信,也能和host1通信,但因为防火墙的存在,host1不能和host3通信
现在需要实现host1和host2通信
上面的本地端口转发是将host3作为sshd服务器,让host1作为客户端和它通信,远程端口转发则是反过来,让host1作为sshd服务器,host3作为客户端主动连接host1
在host3上执行
ssh -fNg -R 22333:host2:80 host1
- -R 远程端口连接
host3请求host1的sshd服务器在host1开启一个套接字监听22333端口,并将host2:80映射到该端口
当有主机访问host1:22333端口时,所用数据都通过host1和host3之间的ssh安全隧道转发给host3,再由host3代为访问host2:80端口
但是此时远程端口转发的sshd服务器再host1上,在sshd默认配置下,只允许本地开启22333端口绑定在回环地址上,不能通过bind_addr修改,只能在host1的sshd配置文件中启用"GatewayPorts",此时bind_addr绑定在所有地址上,其他主机才能访问到host:22333端口
动态端口转发
本地/远程端口转发都固定了端口的映射,也就是说转发端口和目标端口之间的通信协议是一对一的关系
比如host2:80端口映射到host1:8080,此时可以使用浏览器向host1:80发送http请求,但不能使用ssh工具向host:8080发送命令,8080端口是无法解析的
当我们既想要在host1上访问host2,也想访问互联网,就需要使用动态端口转发
ssh -fNg -D 2222 host3
- -D 动态端口转发
道理和本地端口转发很像,host1在本地创造一个套接字,充当socks4或5服务监听2222端口,当客户端程序设置了host1:2222代理时,所有的数据都会转发到host1:2222端口上,再由host:2222通过安全隧道将数据转发给host3,最后由host3转发到host2的动态端口或者连接互联网
SSH端口转发(ssh隧道)相关推荐
- 建立ssh隧道_快速掌握 SSH 端口转发,助力远程工作
概述 ssh 是我们平时连接远程服务器必不可少的的工具,实际上,SSH 还同时提供了一个非常有用的功能,这就是端口转发. 将其他 TCP 端口的网络数据通过 SSH 链接来转发,这一过程有时也被叫做 ...
- SSH端口转发Forwarding及隧道Tunneling
目录 概述 环境及术语约定 本地转发 远程转发 动态转发 多级转发 概述 我们先来了解一下端口转发的概念吧.我们知道,SSH 会自动加密和解密所有 SSH 客户端与服务端之间的网络数据.但是,SSH ...
- 利用SSH端口转发功能实现X转发
利用SSH端口转发功能实现X转发 分类: Linux2012-08-22 13:13203人阅读评论(0)收藏举报 sshserverwindowsdoslinuxxp SSH协议中有X转发协议.在S ...
- 【转】实战 SSH 端口转发
本文转自:http://www.ibm.com/developerworks/cn/linux/l-cn-sshforward/index.html,至于有什么用,懂的懂! 实战 SSH 端口转发 通 ...
- 实战 SSH 端口转发
2019独角兽企业重金招聘Python工程师标准>>> 第一部分 概述 当你在咖啡馆享受免费 WiFi 的时候,有没有想到可能有人正在窃取你的密码及隐私信息?当你发现实验室的防火墙阻 ...
- SSH端口转发的理解(精华)
之前一直在纠结什么是端口转发,现在写下自己的理解,并试验本地端口,远程端口转发 SSH(Secure Shell,安全外壳协议),在SSH的通道上传输数据都是通过加密的,每次连接SSH会执行指纹核对来 ...
- linux远程ipv6端口,SSH端口转发笔记(ipv6 与 端口映射)
端口转发概念 端口转发或隧道,是一种通过SSH转发本来不安全的TCP通信的安全保护罩.您可以保护例如POP3,SMTP和HTTP连接,否则可能是不安全的.网络上什么人都有! 有两种类型的端口转发:本地 ...
- 通过 SSH 端口转发实现异地内网服务器互通
异地内网服务器互通,直接通过路由器映射也可以做到,但是由于公网IP并不是固定的,因此这里介绍通过 SSH 端口转发,实现的固定IP访问 场景:内网机器 A.无固定IP机器B.固定IP机器C,其中 B ...
- ssh端口转发(之kettle ssh方式连接数据库)
ssh参数解释 格式 ssh [user@]host [command] 选项: -1:强制使用ssh协议版本1: -2:强制使用ssh协议版本2: -4:强制使用IPv4地址: -6:强制使用IP ...
最新文章
- linux按文件名排序ls,linux – 如何使用shell脚本按名称对文件进行排序
- 流程图的制作技巧分享,手把手教你如何画流程图?
- 设置透明色有残留怎么办_无尘车间装修,无尘车间内部光线不好怎么办?
- 前端学习(2825):vs开发小程序的插件
- redis核心技术与实战(二)缓存应用篇
- linux head命令作用,Linux查看文件内容之head命令
- Scrapy添加随机ip
- 转义字符'\r'在Python内置函数print()中的妙用
- php顺序查找法,php二分查找、顺序查找算法
- CF 917A The Monster 【括号匹配】
- Webpack学习大纲
- 内联元素与内联块状元素
- 全国计算机二级公共基础知识电子版,全国计算机二级公共基础知识汇总.pdf
- SpringMVC工作原理与工作流程
- Quicker | 便捷的截屏软件 | 截图 | 截图OCR(图片编辑及文字识别)(二)
- win系统服务器做加速,Win 2003操作系统25招加速大法(转)
- android广播 拦截短信,短信接口防刷信息推荐「多图」
- 如何优雅的编写前端代码
- New 900 Sentences
- 2017吉林(长春)第十九届国际供热供暖、锅炉、空调及节能减排技术设备展览会会刊(参展商名录)