ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 利用ssh建立网络转发通道

利用ssh建立网络转发通道

原创 Linux操作系统 作者:regonly1 时间:2009-03-20 16:29:30 0 删除 编辑

这两天由于遇到公司的vpn不能拨,只有一台对外的windows服务器。于是就想到了利用这个服务器进行端口映射。
windows下就使用portmap这个端口映射工具就可以很方便的实现这个功能。而且容易理解。没两下就搞定了。然后想到了如果这台是unix类的服务器,那该如何实现这个端口的映射呢?
记得以前使用过haproxy这个工具来实现。采用配置文件的方式,执行该命令,然后转发端口即可。如果没记错的话当时是只支持udp的,而不支持tcp。
以前也碰到过这个问题,也看到了ssh的这种实现方式,但是那时的技术基础还理解不了这个概念。
ssh端口映射命令格式:
ssh -p [port] -f -N -g -L dst_port:tunnel_host:src_host   user@src_host
参数:
-p: 指定连接到src_host主机的端口(ssh端口);
-f:    后台运行该映射命令;
-N: 不执行远端命令,在只是转发端口时很有用(如果不指定该参数,则将会登录到远端主机);
-g: 允许远程主机连接本地转发端口;
-L: 将本地端口映射到远程主机端口;
-C: 执行数据压缩;
-R: 将远程主机端口映射到本级端口。

假设,有主机A和B(均为unix系统,且ssh端口都为22),想要用A来映射B的1521端口,则有(假设当前在A上):
ssh -p 22 -f -N -g -L 15210:host_A:1521   test@host_B
这样就实现了端口的转发,即我从主机A上访问15210端口就是访问了B上的1521端口。也就是说主机A承担了转发的中间管道(第15210号管道)的作用。通过这个管道我们就直接访问到了B。

与-L并行的还有-R和-D参数。
另外ssh在映射的之前,有个参数对是否可以开通映射做了限制:
AllowTcpForwarding  yes/no
如果是yes就可以进行端口映射,反之则不行。
该参数在/etc/ssh/sshd_config这个文件中设置。
这个参数我在solaris 10里面发现了,在8里面却连/etc/ssh这个目录都没有,有的系统有这个配置文件,但是没有这个参数。不知道是不是ssh版本引起的。


两个参考链接:
http://www.diybl.com/course/6_system/linux/Linuxjs/20090309/160179.html
http://floss.zoomquiet.org/data/20070104103806/

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/12932950/viewspace-573247/,如需转载,请注明出处,否则将追究法律责任。

下一篇: 端口监控脚本
请登录后发表评论 登录
全部评论

注册时间:2008-05-10

  • 博文量
    257
  • 访问量
    1028909