端口转发介绍
SSH为建立在应用层和传输层基础上的安全协议,常用端口为22。本文主要介绍其端口转发功能。顾名思义,就是监听指定端口,把监听到的信息通过ssh协议通道(22端口和ssh server)转发到remote target host 指定端口。其中ssh server就是中转服务器(代理服务器)。
中转服务器连通性:客户端主机能ssh登陆到中间主机;中间主机与目标应用无防火墙限制。当然中转服务器可以是多台(问题2就是两台中转服务器)。
端口转发方式方法
1.方式
本地端口转发:client能ssh到server时,可使用,属于正向ssh。
远程端口转发:server能ssh到client时,可使用,属于逆向ssh。
某些条件限制下就只能用一种端口转发方式了。
2. 方法
a:ssh命令行(linux主机或仿真器运行)
本地端口转发:
ssh -L
远程端口转发:
ssh -R
b:SecureCRT工具端口转发功能(主要介绍)
c:利用orion-ssh2-214.jar包java编码模拟端口转发和基于ssh协议的功能(后面介绍)
SecureCRT工具端口转发功能实例一:本机访问受防火墙限制的数据库服务器
1. 中转服务器:10.10.222.333
2. 目的主机:11.11.222.444
3. 实现本机登陆
步骤一:快速新建连接 > ssh到10.10.222.333
SecureCRT>quick connect>
步骤二:端口转发设置
1.标签右键>session options>Port Forwarding(本地端口转发)
2.新增端口转发
点击add,新增一个本地端口转发。设置参数后保存。
步骤三:重新组装数据库连接串
真实连接串:(DESCRIPTION =(ADDRESS = (PROTOCOL = tcp)(HOST = 11.11.222.444)(PORT=1542))(connect_data=(sid=test-db)))
端口转发连接串:(DESCRIPTION =(ADDRESS = (PROTOCOL = tcp)(HOST = 127.0.0.1)(PORT=1542))(connect_data=(sid=test-db)))
或(DESCRIPTION =(ADDRESS = (PROTOCOL = tcp)(HOST = localhost)(PORT=1542))(connect_data=(sid=test-db)))
注:端口转发连接串中端口不一定与真实连接串中端口相等。
步骤四:本机登陆test db
在pl/sql客户端,用步骤三端口转发连接串,登陆成功。前提是SecureCRT connect要处于连接状态。(即步骤一要一直连接着)
利用orion-ssh2-214.jar包java编码模拟端口转发
Connection conn = new Connection("10.10.222.333");
// 建立连接
conn.connect();
//ssh登陆
boolean isAuthenticated = conn.authenticateWithPassword(username,password);
if (isAuthenticated == false)
thrownew IOException("Authentication failed.");
//localhost:12345 端口转发到11.11.222.444:22端口
LocalPortForwarder lpfd = conn.createLocalPortForwarder(12345, "11.11.222.444", 22) ;