如何用 socat 实现 ssh -R 反向通道的功能?

2015-03-22 12:08:20 +08:00
 xiaoyao9933
正如昨天我发的帖子https://v2ex.com/t/178418
前后考虑了一下似乎用socat实现省去了加密并且速度更快,找来找去一圈教程,似乎只有这个对路。

http://stackoverflow.com/questions/8616149/udp-reverse-tunnel-over-ssh-using-socat

比如映射22端口
socat exec:"ssh removeserver \"socat tcp-listen:10000,fork -\"" tcp-connect:localhost:22

但是我无论按照这个指令如何做,都不能建立反向通道。
求socat高手指导?
3951 次点击
所在节点    问与答
3 条回复
xiaoyao9933
2015-03-22 12:22:57 +08:00
如果改用
socat exec:"ssh removeserver \"socat tcp-listen:10000,fork -\"" tcp-connect:localhost:22,reuseaddr
倒是可以ssh连接10000端口成功一次,但是,ssh断开后,这个通道就损坏了。
若改为
socat exec:"ssh removeserver \"socat tcp-listen:10000,fork -\"" tcp-connect:localhost:22,fork,reuseaddr
就会出现
ssh: Connection to eric@localhost:10000 exited: Integrity error (bad packet size 1349676920)
datocp
2015-03-22 13:07:41 +08:00
http://cyrilwang.pixnet.net/blog/post/25636594-%E5%8F%8D%E5%90%91%E9%80%A3%E7%B5%90-(reverse-connection)
http://cyrilwang.pixnet.net/blog/post/25636594-反向連結-(reverse-connection)
反向連結 (Reverse Connection)
上面的页面(己被墙)提供了一个使用socat进行反向连接的过程,hoho是不是很简单,已经测试可以将lan内的web服务器反向通过vps进行连接。搞得这么麻烦,主要是这些年 被所谓的免费坑苦了,所以不喜欢什么免费的东东,数据还是做在自己硬盘上安全。

vps上的客户端
socat -d -d -d tcp-l:80,reuseaddr,bind=0.0.0.0,fork tcp-l:8080,bind=0.0.0.0,reuseaddr,retry=10
只有在tcp 80端口有请求时才会生成侦听tcp 8080端口。

lan内的服务器端
socat -d -d -d -v tcp:vpsip:8080,forever,intervall=10,fork tcp:localhost:80
将lan内的电脑不断尝试连接vps的tcp 8080端口,当连接成功后台会连到localhost提供的tcp 80端口应用。

哈哈,是不是很简单,网络不需要做任何更改。
jackytang520
2015-03-22 14:10:58 +08:00
haproxy不知道行不行

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/178586

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX