如何用ssh实现端口的映射
Posted honpey
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何用ssh实现端口的映射相关的知识,希望对你有一定的参考价值。
如何用ssh实现端口的映射?
为了解决什么问题,应该就是ssh服务器程序在22号端口监听,难道这就是用软件实现了
实现隧道的方法真是有好几种,包括使用ssh,包括使用tap,或者使用ssh都是可以的,今天试验下如何使用ssh实现隧道功能。
测试程序在
codebox/net/sock/inet/server.cpp
codebox/net/sock/inet/client.cpp
codebox/net/sock/inet/Makefile
在目录里make一下就可以
测试的方法就是在虚机中跑上server,然后在宿主机上连上ssh,
ssh -L 7001:192.168.0.110:10943 192.168.0.110
此时client端需要把包发到:127.0.0.1:7001端口,ssh会在这个端口上监听
这个时候需要程序的就需要在配置文件中增加本地proxy的选项了。
192.168.0.110 这个地方应该填啥东西呢?
ssh 456 root 5u IPv4 3146860 0t0 TCP localhost:afs3-callback (LISTEN)
此时就是ssh在监听这个地址,所有发往这个结果的地址都会被发送到本地:7001这个地址,然后通过ssh这条线发送。
就是我ssh的线程在监听呀
但是使用这个段需要保证ip_forward一定要打开吗?好像是不需要的!
试一下,果然是不需要的,比tap的方法好;
那么能不能实现一个真正的管道程序呢?有这样三台机器:
client -----> stationA (192.168.0.110) -------> Terminate(192.168.1.110)
使用如下的指令,192.168.1.110 ,然后使用ssh登录stationA,然后在这个stationA,然后在client上执行client,此时就就可以把所有的流量都导流到了stationsA,stationsA上sshd,就会收到这个这份数据,然后转发Terminate机器上啦。
ssh -L 7001:192.168.1.110:10943 192.168.0.110
这篇文章可以与之前写的ppp协议作对比
之前想过,其实用户态程序本来可以完成数据转发的功能,可以不依赖于内核的ppp功能,两篇文章对比下
以上是关于如何用ssh实现端口的映射的主要内容,如果未能解决你的问题,请参考以下文章