在 Windows 中管理多个 ssh 会话(通过 putty?)以查看集群服务器的最佳方法是什么?

在 Windows 中管理多个 ssh 会话(通过 putty?)以查看集群服务器的最佳方法是什么?

有一款名为 cssh for linux 的工具,其用途与我想在 Windows 上使用的类似。基本上,我登录到彼此相同的服务器,并且希望能够同时在两个窗口中输入相同的内容来查看日志、执行各种 grep 等。

答案1

PuTTY 命令发送器就是你要找的。

答案2

您可以随时安装clusterssh通过赛格威(适用于 Windows 的 UNIX 兼容 shell)...(您可以通过 Google 搜索有关这两者的更多信息)...

答案3

我知道这是一个老问题,但我之所以发现它,是因为我已经使用 Putty Command Sender 大约五年了,一直认为它很糟糕。直到现在,我才开始寻找替代品。刚刚遇到了 puttyCluster --https://github.com/mingbowan/puttyCluster——天哪,这太不真实了,我一直在愚蠢的 Putty CS 上浪费时间,它无法使用最大化+“停靠”窗口。

还发现了这些替代方案,但还没有尝试过:cputty clustershish(我没有发布更多链接的代表,但只需谷歌一下)。

答案4

除了使用 clusterssh 或 mtputty 之外,一个简单的 bash 脚本还可以使用 ssh 登录到远程服务器列表,使用 scp 将文件复制到每个服务器,并在每台服务器上执行脚本。我是 bash 脚本新手,所以这可能不是最有效或最好的选择,但似乎很容易管理。我发现它比 clusterssh 和 mtputty 都更容易。将此代码保存到名为 copyFileToServers.sh 的文件中,创建一个包含 ips 或服务器名称列表的 serverlist 文件,然后通过键入 来执行./copyFileToServers.sh

您需要在 Windows 上安装 cygwin(这是我测试过的唯一地方)。您必须单独安装 sshpass(我知道人们真的很讨厌这个包,但我太懒了,不想在所有服务器上都安装 ssh 密钥),可以从 sourceforge 下载。

需要注意的是,ssh user@remomte_server对于要管理的每台服务器,您都必须从管理机器的命令行进行登录。除非您手动确认为远程服务器添加 ssh 密钥,否则 sshpass 不起作用。您只需执行一次此操作。

(注意:截至 2014 年 7 月,我无法在 Windows cygwin 上运行 clusterssh,所以我无法真正说出该程序在完成 OP 要求时好坏。)

HOSTS=./serverlist
echo "what file should be copied to the remote servers?"
read file
echo "where should the file be placed on each remote server?"
read dest
echo "what script should be run on all remote nodes?"
read remoteScript
while read line

do
        if [ "${#file}" -gt 0 ] 
    then 
        sshpass -p 'password' scp $file root@$line:$dest 
    else 
        echo "skipping file copy" 
    fi
    if [ "${#remoteScript}" -gt 0 ] 
    then 
        sshpass -p 'password' ssh root@$line 'bash -s' < $remoteScript 
    else 
        echo "skipping remoteScript execution" 
    fi
    echo $line
done < $HOSTS

相关内容