如何用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功能,两篇文章对比下

猜你喜欢

转载自www.cnblogs.com/honpey/p/9033144.html