目录
SSH隧道技术-本地端口转发
SSH隧道
隧道是一种把一种网络协议封装进另外一种网络协议进行传输的技术。这里我们研究ssh隧道,所以所有的网络通讯都是加密的。又被称作端口转发,因为ssh隧道通常会绑定一个本地端口,所有发向这个端口端口的数据包,都会被加密并透明地传输到远端系统。
本地端口转发
本地端口转发是将某个内网中的服务端口映射到本地中,访问映射的本地端口即可实现访问某个内网中的服务。
如上图,本地的192.168.1.150的机器希望访问另一个内网的10.132.37.150机器上的oracle数据库,前提是这里有121.199.9.15的ssh访问权。在本机Localhost
上建立本地隧道的语句如下:
# 语法规则
# ssh <参数> <本地映射端口>:<内网服务器>:<内网服务端口> <SSH服务> <SSH服务端口>
ssh -N -f -L 1521:10.132.37.150:1521 [email protected] -p 43221
执行完上述命令后,ssh本地隧道进程会后台执行,且已经开放了1521端口,使用数据库工具连接本地1521端口即可访问数据库服务。
检查本地是否正确映射
# 查看本地1521端口是否正确打开
wangjun[192] /Users/wangjun $ netstat -an | grep 1521
tcp4 0 0 127.0.0.1.1521 *.* LISTEN
tcp6 0 0 ::1.1521 *.* LISTEN
# 查看ssh隧道进程是否已经执行
wangjun[192] /Users/wangjun $ ps -ef | grep ssh
501 2000 1 0 2:44PM ?? 0:00.02 /usr/bin/ssh-agent -l
501 4994 1 0 10:47AM ?? 0:00.00 ssh -N -f -L 1521:10.132.37.150:1521 [email protected] -p 4322
501 4999 3105 0 10:47AM ttys001 0:00.00 grep ssh
windows系统可是使用putty的小工具 plink 进行转发
plink.exe -P 22 -l root -pw "1234" -R 445:127.0.0.1:445 IP
隧道参数
名称 | 含义 |
---|---|
q | 该命令进入安全模式 |
T | 该命令不占用shell |
N | 该命令不执行远程命令 |
f | 命令在后台执行 |
D | socket5服务器地址和端口 |
L | 本地映射端口 |
总结
除了上面提到的远程端口转发,SSH隧道技术还有远程端口转发及动态端口转发,根据实际情况网上参考即可。
版权所有,本作品采用知识共享署名-非商业性使用 3.0 未本地化版本许可协议进行许可。转载请注明出处:https://www.wangjun.dev//2017/01/ssh-tunnel-local/