1. 程式人生 > >如何用ssh實現端口的映射

如何用ssh實現端口的映射

文章 對比 ati 如何 127.0.0.1 ons server strong listen

如何用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實現端口的映射