MobaXterm:跳板机自动 SSH 的批量会话生成

MobaXterm:跳板机自动 SSH 的批量会话生成

适用场景

本机通过 Telnet 登录跳板机;登录后由 MobaXterm 宏自动输入跳板机账号、密码,并执行 ssh <目标设备IP> 进入 H3C 等设备。

目标是根据 CSV 设备清单,一次生成多个 MobaXterm 会话和对应启动宏。

最终的命名规则

CSV 中每一行的 SessionName 是唯一标识,严格一一对应:

SessionName,TargetIP
JH-JH-CN-ALEAF-2,61.175.36.6

会生成:

会话名:JH-JH-CN-ALEAF-2
宏名:JHDXXXCYW\JH-JH-CN-ALEAF-2
宏执行内容:ssh 61.175.36.6

其中 JHDXXXCYW 是宏文件夹名称;宏名称后半段始终与会话名完全相同。

使用到的文件

批量工具目录中包含:

generate-mobaxterm-jump-sessions.ps1  # 批量生成脚本(ASCII,兼容 Windows PowerShell 5.1)
devices.csv                           # 设备清单
README-ASCII.txt                      # 简要英文使用说明

devices.csv 只需要维护两列:

SessionName,TargetIP
JH-JH-CN-ALEAF-2,61.175.36.6
JH-JH-CN-ALEAF-3,61.175.36.7

首次准备

  1. 在 MobaXterm 中手工创建一个能正常工作的模板会话,例如 JH-JH-CN-ALEAF-1
  2. 模板会话配置为 Telnet 连接跳板机,例如 172.20.140.187:23
  3. 在模板会话的 Advanced Telnet settings 中,绑定一个启动宏。
  4. 宏的逻辑如下,只有最后的目标地址因设备而异:
跳板用户名
RETURN
SLEEP=50
跳板密码
RETURN
SLEEP=50
ssh 61.175.36.5
RETURN
SLEEP=50
  1. 保留模板会话,不要删除。脚本通过复制模板保留 Telnet、字体、字符集、终端类型和会话目录等配置。

执行步骤

  1. 编辑 devices.csv,填写实际的会话名和设备 IP。
  2. 关闭 MobaXterm。否则 MobaXterm 退出时可能覆盖脚本写入的配置。
  3. 如果 MobaXterm.ini 位于 C:\Program Files,以管理员身份打开 PowerShell。
  4. 进入存放脚本的目录。路径带空格时必须加引号:
cd "C:\Program Files\MobaXterm v26.5\ps"
  1. 执行:
powershell -ExecutionPolicy Bypass -File ".\generate-mobaxterm-jump-sessions.ps1" -IniPath "C:\Program Files\MobaXterm v26.5\MobaXterm.ini" -TemplateSessionName "JH-JH-CN-ALEAF-1" -MacroFolder "JHDXXXCYW"
  1. 根据提示输入跳板机用户名和密码。
  2. 脚本显示 Done: N sessions and macros created. 后,重新打开 MobaXterm 检查模板会话所在文件夹。

脚本实际做了什么

  1. 从现有 MobaXterm.ini 找到模板会话所在的 Bookmarks 配置段,例如 Bookmarks_1
  2. 从模板会话中复制全部连接和终端参数。
  3. 根据每行 CSV 生成新会话,并把启动宏绑定替换为 宏文件夹\会话名
  4. [Macros_2](旧版本可能是 [Macros])中生成同名宏。宏内执行 ssh TargetIP
  5. 写入前创建自动备份,例如:
MobaXterm.ini.bak.20260812-125422

同名会话再次生成时会更新已有会话和宏,不会重复新增。

常见问题

Windows PowerShell 5.1 报中文乱码、语法错误

不要使用包含中文文件名或中文脚本内容的旧版脚本。使用 generate-mobaxterm-jump-sessions.ps1,它是 ASCII 编码,专门兼容 Windows PowerShell 5.1。

提示 $PSScriptRoot 为空、找不到 devices.csv

使用最新版脚本。它会在脚本启动后定位同目录的 devices.csv,不要重命名该文件。

运行提示无法写入 MobaXterm.ini

说明 MobaXterm 没有关闭,或 Program Files 目录没有管理员写入权限。关闭 MobaXterm 后,以管理员身份打开 PowerShell 再执行。

想回退本次批量生成

关闭 MobaXterm,将对应的 MobaXterm.ini.bak.时间戳 文件恢复为 MobaXterm.ini,再重新启动 MobaXterm。

安全提醒

  • 密码不写进 CSV,脚本运行时输入。
  • 生成后,MobaXterm 会按自身宏机制把密码保存到 MobaXterm.ini;应保护好该配置文件和备份文件。
  • 不要将包含真实密码的 MobaXterm.ini、宏配置或截图发送给无关人员。

相关 Telnet 设置建议

当前跳板机会话建议:

Telnet client:PuTTY telnet
Negotiation mode:Active mode
Enable Telnet KeepAlive:勾选
<Return> key sends <newline>...:不勾选

Cygwin telnetBusybox telnet 不提供 MobaXterm 的 Telnet KeepAlive 选项;需要跳板会话保活时继续使用 PuTTY telnet