SSH端口转发
学习使用SSH进行端口转发
今天正好遇到了需要使用 SSH 端口转发的应用场景,在用端口转发解决问题后,又重新学习了一下 SSH 的端口转发,学到了新的使用方法,故作此记录
命令
SSH 端口转发有三种模式,分为本地端口转发,远程端口转发和动态端口转发
本地端口转发和远程端口转发
本地端口转发和远程端口转发使用如下命令
1 | |
动态端口转发
动态端口转发使用如下命令
1 | |
端口转发的使用场景
端口转发本质上是利用 SSH 建立的加密隧道实现的流量代理功能,有几个使用场景
本地端口转发
比如远端的主机在其本地环回地址 127.0.0.1:80 上搭建了一个服务,理论上本机是无法访问的,但是如果使用端口转发,将远端主机的 80 端口转发到的本地的某一个端口,如8080端口,就可以实现访问本机的 127.0.0.1:8080 来访问这个服务了
这样的场景可以使用如下命令实现
1 | |
又比如有一台主机A,它可以访问到内网中的某台主机B上的服务,例如b.b.b.b:bb,这种情况可以使用主机A作为中转,转发到本地cc端口,访问到主机B,使用如下命令
1 | |
远程端口转发
假设有一台内网主机上面有一个服务,运行在其本地环回地址 127.0.0.1:80 上,又有一台公网主机,希望使用端口转发实现内网穿透,可以在内网主机上使用如下命令
1 | |
这样就可通过 公网IP:公网端口 访问到内网主机上 80 端口的服务了
动态端口转发
动态端口转发就是不固定某一个端口,而是来者不拒,任何端口的流量都可以转发,例如使用如下命令开启一个到达一台外网主机的动态端口转发
1 | |
然后在浏览器的代理中设置 SOCKS 代理,主机设置为 127.0.0.1,端口设置为 10086,这样就实现了一个通过 SSH 加密隧道的访问外网的行为
很早以前就学到过 SSH 端口转发的用法,但是一直没有实际使用的机会,导致没有实践的经历,对这一块的知识也就不是很熟,多亏了现在有使用的机会,也顺便重温了一下这块的知识,脑子里的知识一下子就串通起来了|ω・)