You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过循环SSH多台主机并在不同终端开启会话?

解决SSH多会话独立终端窗口打开的问题

你的脚本里ssh命令是阻塞式的——它会占据当前终端进程,直到你关闭SSH会话才会继续执行循环的下一次迭代。要让每个SSH会话在独立终端窗口打开,只需要把ssh命令放到对应终端模拟器的启动参数里,让每个会话在新的终端进程中运行。

针对GNOME终端(大多数GNOME桌面环境默认终端)

修改后的脚本:

#!/usr/bin/bash

bandit=$(cat /root/Desktop/bandit.txt)

for host in {1..2}
do
    echo "正在为bandit$host启动新终端SSH会话"
    gnome-terminal -- ssh bandit$host@$bandit -p 2220
done

如果希望SSH会话结束后终端窗口不自动关闭,可以添加--wait参数:

gnome-terminal --wait -- ssh bandit$host@$bandit -p 2220

其他终端模拟器的适配写法

不同桌面环境的终端启动参数略有差异,对应替换即可:

  • KDE Konsole终端:konsole -e ssh bandit$host@$bandit -p 2220
  • Xterm终端:xterm -e ssh bandit$host@$bandit -p 2220
  • Terminator终端:terminator -e ssh bandit$host@$bandit -p 2220

原理说明

用终端模拟器的启动命令包裹ssh后,每次循环都会启动一个独立的终端进程来运行SSH会话,当前脚本的循环不会被阻塞,能直接继续创建下一个终端窗口,实现同时打开多个独立SSH会话的效果。

内容的提问来源于stack exchange,提问作者Arun Kumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 18:01:08