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首次准备
- 在 MobaXterm 中手工创建一个能正常工作的模板会话,例如
JH-JH-CN-ALEAF-1。 - 模板会话配置为 Telnet 连接跳板机,例如
172.20.140.187:23。 - 在模板会话的 Advanced Telnet settings 中,绑定一个启动宏。
- 宏的逻辑如下,只有最后的目标地址因设备而异:
跳板用户名
RETURN
SLEEP=50
跳板密码
RETURN
SLEEP=50
ssh 61.175.36.5
RETURN
SLEEP=50- 保留模板会话,不要删除。脚本通过复制模板保留 Telnet、字体、字符集、终端类型和会话目录等配置。
执行步骤
- 编辑
devices.csv,填写实际的会话名和设备 IP。 - 关闭 MobaXterm。否则 MobaXterm 退出时可能覆盖脚本写入的配置。
- 如果
MobaXterm.ini位于C:\Program Files,以管理员身份打开 PowerShell。 - 进入存放脚本的目录。路径带空格时必须加引号:
cd "C:\Program Files\MobaXterm v26.5\ps"- 执行:
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"- 根据提示输入跳板机用户名和密码。
- 脚本显示
Done: N sessions and macros created.后,重新打开 MobaXterm 检查模板会话所在文件夹。
脚本实际做了什么
- 从现有
MobaXterm.ini找到模板会话所在的 Bookmarks 配置段,例如Bookmarks_1。 - 从模板会话中复制全部连接和终端参数。
- 根据每行 CSV 生成新会话,并把启动宏绑定替换为
宏文件夹\会话名。 - 在
[Macros_2](旧版本可能是[Macros])中生成同名宏。宏内执行ssh TargetIP。 - 写入前创建自动备份,例如:
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 telnet 和 Busybox telnet 不提供 MobaXterm 的 Telnet KeepAlive 选项;需要跳板会话保活时继续使用 PuTTY telnet。