做了一个隧道软件,叫做 Termtunnel,邀请大家体验

2022-05-01 21:46:16 +08:00
 beordle

简单来说,就是和 lrzsz 一样的原理,原理上可以绕过堡垒机完成网络的打通,比如可以用于分享本机的互联网给生产机器。只是说 lrzsz 只能传输文件,Termtunnel 除了传输文件,还可以做端口转发。

目前使用起来还可以。推荐有需要的朋友尝试一下看看。

介于原型玩具和正式发布之间的开发状态,有 bug 正常,轻拍。如果有用的话求个 star ,多谢。

https://github.com/beordle/termtunnel

14433 次点击
所在节点    分享创造
52 条回复
lj0014
2022-05-02 07:43:25 +08:00
有意思
aru
2022-05-03 11:11:20 +08:00
有意思啊,这个看样子能用
Chipmunker
2022-05-03 23:40:58 +08:00
好像不支持 Windows 啊。
beordle
2022-05-04 13:36:36 +08:00
通过 WSL 的话目前就可以运行了,只是对 windows 版本有要求。编译成普通 exe 的话,需要适配到 cygwin ,短期内有空的话会增加一下。
beordle
2022-05-04 13:37:18 +08:00
frinstioAKL
2022-05-05 11:45:35 +08:00
老哥这个实在是太猛了, 内网的机器本来没法连接软件源, 这下一下子打通了....
frinstioAKL
2022-05-05 11:49:44 +08:00
有点好奇, 这样做从技术上是不是其实就是普通的 zModem, 和 rzsz 并无本质差异, 所以从技术上看是没有违反公司安全规范的, 公司 IT 也很难去鉴定. 但是从行为上看, 绕过了跳板机就算违规了吧
beordle
2022-05-05 13:36:28 +08:00
@frinstioAKL 怎么讲呢,咱们看屏幕就是在下行,敲键盘就是在上行,这个双向通信的存在不会变。毕竟使用 pty 操作 ssh ,和用 screen tmux 操作 ssh 没有任何区别,只不过这个应用会擅自帮你敲键盘,帮你解读屏幕内容自动化了而已。这个通信内容从你手动装 rpm 包下载 rz 上去通过协议转换变成了能让 yum 识别的内容,从而提高你的效率。区别在于通信本身是否会被坏人利用,矛盾的集中点在于最终提供的 socket 本身太标准,因此容易被坏人利用。毕竟这个通道的出现是你的行为导致的,大部分公司安全侧如果真的评估我想应该都属于违规。自身安全评估,我只能说 at your own risk ,为了公司安全着想的角度,临时静态端口映射的话,一般来说没什么问题。

不过这个场景只是其中之一,也有其他场景可以用。比如 lrzsz 莫名奇妙在 kubectl 中不能用的情况等等,程序的抗干扰能力要比 rzsz 强很多。
frinstioAKL
2022-05-05 13:47:35 +08:00
@beordle 感谢楼主的耐心回复, 和我预想的一样. 这个工具太有用了, 给楼主点赞
raykle
2022-05-06 00:25:33 +08:00
看不懂,但感觉很强!已 star
ThirdFlame
2022-05-06 18:12:41 +08:00
我能否这样理解,就是能在 remote 主机上开一个 socks5 代理,流量能通过本地主机出去。

比如某台服务器不能上外网,我的主机能上外网,而且我能直接 ssh 服务器。
lw3088
2022-05-06 18:23:03 +08:00
不明觉厉 先 star
des
2022-05-06 18:27:28 +08:00
tmux 下能用吗?
beordle
2022-05-06 18:29:21 +08:00
@ThirdFlame 是的,支持默认的 openssh 所不包含的监听在远程,连接到本地模式(动态 ssh -R )。

当然也支持类似于 ssh -D ssh -R ssh -L 的模式

但主要是为了解决 ssh 自带的功能在这种情况下并不好用或者不能用的情况。比如堡垒机。比如非常非常多跳的 ssh ,又或者是 telnet 出来的 shell 。
beordle
2022-05-06 18:38:32 +08:00
@des 不管 tmux 在哪一跳都可以使用的(和绝大多数高级终端都可以配合使用),只是由于 tmux 的实现原因,速度将受限,上行稍微正常,下行大约只有 10+ KB/s ,修改几行 tmux 的源码可以解决问题。但这样修改的其它副作用存疑..所以我不推荐使用本程序解决日常的 tmux 问题。社区之前有人做的 tlrzsz ,没有研究过,但可能是一个更好的选择。
billlee
2022-05-06 18:58:56 +08:00
重新发明 slirp?
beordle
2022-05-06 19:22:41 +08:00
@billlee slirp 之前在 qemu 中遇到过。这个程序和 slirp 的目的还是完全不同的,但也有类似的目的,因此其实内置了 lwip tcpip 协议栈,若更换 slirp 也是可以的。
abbottcn
2022-05-06 20:08:15 +08:00
@beordle 外行问一下, 代理模式, 能给个示例吗?
比如网络互联存在如下状态:
Internet <----> hostA <----private LAN----> hostB
显然 hostB 无法直接访问互联网.
借用 termtunnel, 如何让 hostB 上的 yum 工作呢? 如有打扰, 请见谅.
beordle
2022-05-06 20:29:09 +08:00
@abbottcn 如果 private LAN 不复杂这个实际上你可以直接使用 ssh

```
host_a$ ssh -R 8000 root@119.28.129.102
host_b$ curl --socks5 127.0.0.1:8000 bing.com -v #验证
```

在 /etc/yum.conf 增加
proxy=socks5://127.0.0.1:8000 (原来源于网络)



如果使用 termtunnel
则是

```
host_a$ termtunnel ssh root@119.28.129.102
host_x$# 过程不重要
host_y$# 过程不重要
host_b$ termtunnel -a
termtunnel >> remote 127.0.0.1 8000 127.0.0.1 0
```

然后再开启一个窗口
```
host_a$ ssh root@119.28.129.102
...
host_b$ curl --socks5 127.0.0.1:8000 bing.com -v #验证
```

在 /etc/yum.conf 增加
proxy=socks5://127.0.0.1:8000 (来源于网络)
abbottcn
2022-05-06 20:34:01 +08:00
@beordle 多谢大佬指点,外行不胜感激。
之前用 brook ,可以非常方便的开启代理,socket http 均可……某个版本之后,居然无法使用了。

你说的对,网络不复杂的话,ssh tunnel 就搞定了……只是对外行而言,太极了……

再次感谢你的回复。

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

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

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

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

© 2021 V2EX