第19篇:SSH隧道技术-端口转发(干货)
铁甲万能狗 C++/Python程序媛、量化交易。爱好:历史、语言学SSH的端口转发按照SSH主机(即客户端和服务端)的相对物理距离分为本地转发和远程转发。本地转发,即是在本地客户机由SSH客户端实现的端口转发技术。而本地转发根据设定端口转发的数量分为本地单端口转发和本地多端口转发,本文先讲解SSH的本地端口转发。
SSH隧道的单端口转发
ssh服务和其他服务应用不在同一台主机的情况下,例如典型的例子是如下图我们从外部网络穿透Linux防火墙访问内部网络的oracle数据库服务器。下面示例的参数如下
- oracle的默认监听端口是1521,ip地址为192.168.50.14
- Linux防火墙的公网ip地址144.44.44.44,访问防火墙的ssh端口是9494
- 出差办公的电脑被ssh客户端监听的端口是1922
那么使用满足上面的需求的ssh的端口转发如下图所示
ssh -L 1922:192.168.50.14:1521 [email protected] -p 9494
运行该命令后,Linux防火墙提示您输入远程 SSH 用户密码。本地客户端和远程的Linux防火墙建立 SSH 隧道。
现在,如果您将本地机器数据库客户端指向 127.0.0.1:1922,Linux防火墙充当中间跳板将ssh隧道中的请求流量在解密后转发到内网的oracle服务器,类似地oracle服务器的所有响应流量也会通过ssh隧道传递到本地客户机。
SSH隧道的多端口转发
单个 ssh 命令中将多个端口转发到多个远端的目标主机。例如,仍然以上图为例,还有另一个 Windows 服务器运行着VNC服务,那么您想从本地客户端连接到两个服务器,您可以运行类似的ssh命令:
ssh -L 1922:192.168.50.14:1521 1923:192.168.50.1:5900 [email protected] -p 9494
那么在本地客户机访问Oracle服务器使用127.0.0.1:1922,访问第二台服务器自然使用 127.0.0.1:1923。
如果您在设置隧道时遇到问题,请检查远程SSH服务器的配置确保AllowTcpForwarding 未设置为 no。
标签:端口,SSH,本地,转发,服务器,ssh From: https://www.cnblogs.com/iancloud/p/17553919.html