翻译一下就是:
不管网络中间有多少跳,可以直接连接两端。
- 传文件,使用 upload/download 就可以。
- 网络代理支持服务器使用本地网络(remote_listen),也支持本地使用服务器网络(local_listen)。
这样服务器上访问外网,安装 rpm 等一些操作都可以通过代理;
同样,本地也可以直接打开内网 web 或连通内网数据库。
网络拓扑
使用mac连接远程服务器
your_mac — server1 — server2 — … — server_x — your_target_server安装
两端都要安装 termtunnel, 中间的 server1/server2/…/server_x 不需要。
mac上安装
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16# on mac
## a. brew 安装
brew install beordle/tap/termtunnel
## 或许需要sudo
sudo brew install beordle/tap/termtunnel
# 或许需要公司的代理 or 梯子
http_proxy=http://192.168.50.12:3128 brew install beordle/tap/termtunnel
# b. 源码安装
# 如果你的系统版本过低,也可以采用源码编译安装。源码安装要先有这几个东西
brew install cmake make gcc
# 解压termtunnel.zip,进入目录里
cmake .
make
### 可能的异常,本地的protobuf可能版本太高,需要降级
sudo pip3 install protobuf==3.20.0服务器端安装
- https://github.com/beordle/termtunnel/releases/tag/version-1.7.2
- CentOS 7 使用 termtunnel-1.7.2-linux-amd64.tar.gz 解压放到 /usr/bin 这样PATH包含的路径下。
mac端
假设只是一跳就直接到你的目标机器。如果是多跳,请看最后。1
2
3
4## mac端,只是在普通的ssh命令前加上 termtunnel
termtunnel ssh user_name@you_target_server -p server_port
# example
termtunnel ssh ysyd_xingzhiqian@192.168.100.40 -p 11442服务器端(on your target server)
把服务器上能连通的 10.170.207.137 40046 转发到本地 127.0.0.1 40042,
本地就可以通过 127.0.0.1 40042 连接了(数据库/web/…)1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32[root@host-10-170-207-138 ~]# termtunnel -a
termtunnel>
termtunnel>
termtunnel> help
List of command
Command: local_listen
port forward bind on local host
Command: remote_listen
port forward bind on remote host
Command: upload
upload a file
Command: rz
alias upload
Command: download
download a file
Command: sz
alias download
Command: help
view help manpage
Command: exit
exit application
termtunnel> local_listen 127.0.0.1 40042 10.170.207.137 40046
bind local port done
注意,如果想让别的机器访问这个 40042 端口,则需要把 127.0.0.1 改成 your_mac_ip。
因为 127.0.0.1 只会对本地监听,而非本地网段的网络。
多跳
如果需要多跳。只需要两头使用 termtunnel,中间正常 ssh 即可。
1
2
3
4
5
6
7
8
9
10
11## from your mac to server1
termtunnel ssh user_name1@server1 -p server1_port
## from server1 to server2
ssh user_name2@server2 -p server2_port
## from server2 to server3
ssh user_name3@server3 -p server3_port
...
## from server_x to your_target_server
ssh user_name_t@your_target_server -p server_t_port
## on your target server
termtunnel -a想想为啥呢?
因为 termtunnel 封装了一层,中间的每次 shell 都还是在这次的连接会话里。
当然最后的termtunnel -a
,也是在这次连接里。
所以,多人同时用这种方式登录,不会冲突。各自会在自己的连接中。目前使用体验
- Termtunnel 传文件还算稳定,就是目前没有进度显示。可以解决 lrzsz 乱码失败的问题。
数据未传输完,直接 exit 会被警告。 - 堡垒机过期退出,会导致连接断开。需要重连。