如何让MobaXterm在打开会话时自动启动隧道并结束时关闭?
嘿,这个问题我之前也纠结过!MobaXterm确实不像PuTTY那样默认把隧道启停和会话绑定,但其实用它自带的功能就能搞定,分两种情况给你说:
方法一:用内置会话配置自动管理隧道(最省心)
如果你的转发规则是固定的,直接在会话设置里永久配置就行,MobaXterm会自动在会话启动时建隧道,断开时关隧道:
- 右键你要设置的会话,选择 Edit session
- 切换到左侧的 Advanced SSH settings 选项卡
- 在 Port forwarding settings 区域,点击 Add 按钮:
- 类型选 Local port forwarding
- 填入你的本地端口(比如
8080) - 填入目标地址(就是服务器上的管理应用地址,比如
127.0.0.1:8080)
- 保存设置,下次打开这个会话时,隧道会自动建立;关闭会话时,MobaXterm会自动把隧道关掉,完全不用手动操作。
方法二:用会话宏实现自定义启停(更灵活)
如果你的转发规则比较复杂,或者需要额外的启动/停止逻辑,就用MobaXterm的宏功能:
- 同样右键会话选 Edit session,切换到 Macros 选项卡
- 在 Execute the following commands at startup 框里,添加启动隧道的命令,比如:
这里的# 启动Tomcat manager的本地转发,后台运行不影响会话使用 ssh -L 8080:127.0.0.1:8080 $USER@$HOST -N &$USER和$HOST是MobaXterm的内置变量,会自动替换成你会话里的用户名和服务器地址;加&是把隧道进程放到后台,不占用当前终端。 - 然后在 Execute the following commands on exit 框里,添加关闭隧道的命令,比如:
# 杀掉对应的隧道进程,精准匹配避免误杀 pkill -f "ssh -L 8080:127.0.0.1:8080" - 保存设置后,每次打开会话会自动执行启动命令,关闭会话时自动执行停止命令,完美实现和PuTTY一样的效果。
两种方法我都试过,方法一适合大多数常规场景,不用写代码;方法二适合有特殊需求的情况,比如同时开多个隧道或者需要加一些前置检查。
内容的提问来源于stack exchange,提问作者Grismar
相关产品推荐
相关产品推荐

