Clusterssh用于管理多个SSH服务器的替代方法


11

除了Clusterssh,pssh等之外,是否还有其他选择可以通过一个接口管理多个基于ssh的服务器?

Clusterssh的一个弱点是我的服务器使用基于密钥的身份验证,并使用passhprase进行登录,并且无法使用私钥登录到服务器。

是否有任何其他方法可支持使用私钥进行身份验证?


你有什么问题pssh?您是否需要并行或仅一个程序来管理多个SSH服务器?
量子

我实际上需要查看在服务器上运行的几种命令的实时输出。就像Cluster-ssh一样。
法汉(Farhan)2012年

2
看一下pssh-P选项。
量子

2
@Farhan为什么不使用Ansible?
c4f4t0r

Answers:


6

看看Rundeck- http: //rundeck.org/


看起来不错,但我很难将其添加到节点上。有没有简单的方法向其中添加服务器?因为它仅接受要添加的节点的基于特定xml模式的文件:(
Farhan 2012年

9
  1. 首先定义您的任务:

    from fabric.api import *
    
    @parallel
    @hosts('192.168.3.118', '192.168.6.142')
    
    def hostname():
        run('hostname')
    

    然后通过fab命令行工具执行:

    $ fab -f /path/to/.py/file hostname
    [192.168.3.118] Executing task 'hostname'
    [192.168.6.142] Executing task 'hostname'
    [192.168.6.142] run: hostname
    [192.168.3.118] run: hostname
    [192.168.6.142] out: SVR040-6142
    
    [192.168.3.118] out: SVR040-3118.localdomain
    
    
    Done.
    
  2. 侏儒连接管理器
  3. PAC经理

5

您可以全力以赴,并安装配置管理系统,例如PuppetChef。您没有提到您实际上要管理多少个节点,因此这可能有些过分,但是,当然,您可以通过这种方式集中控制许多计算机。如果您现在很小,但是正在成长,您可能还想在变得更大之前,先设置例如Chef。

如果需要在一组特定的节点上运行临时命令,则可以执行类似的操作knife ssh 'roles:webserver' 'hostname'(knife是Chef的命令行工具),以hostname对具有Web服务器角色的所有节点运行该命令。


我大约有15-20台server.i已经和我在一起,但是我需要与所有ssh终端进行实时交互才能完成某些任务。
法汉(Farhan)2012年

喔好吧。我猜p没有SSH工具。
cjc 2012年

4

我用期待的脚本来自动登录(尤其是因为我必须通过一个JUMB框和一个chroot进入,必须输入密码地段)和做了一些“微调”,以CSSH的配置。因此,我的bin文件夹中有这个“主脚本”,给出了“服务器名称/别名”,它将带我进入所需的服务器以及所需的位置。

在〜/ .clusterssh / config中,我将“ ssh”参数设置为指向脚本,还必须将“ ssh_args”设置为一些无害/伪arg,这是因为cssh具有默认的args列表(如果实际上留空)默认列表将最终出现在脚本中。

因此,脚本(在每个窗口/终端中)将接收此args和给cssh的args中的1个,它从给定服务器的文件中恢复脚本的凭据集以及它必须执行的步骤才能到达位置我想要,然后用所有这些数据调用“期望代码”。

〜/ .clusterssh /配置

ssh=/home/user/bin/qs.sh
ssh_args=-a 

qs.sh

#!/bin/bash
export PATH=~/bin:$PATH
shift
case $1 in
q4|q5|q6|q7|q8|q9)
    essh user1@axt$1 
    ### essh it's some little bash script that does the things I said before and in the end it launches the expect 
    ;;
q1|q2|q3)
    essh axtr@axt$1
    ;;
*)
    echo "GOOH"
esac

所以我通常这样称呼它

# cssh q4 q5 q6 q7

它也可以与具有集群“ qAll q4 q5 q6 q7”的“集群别名”一起使用,我可以使用cssh qAll进行调用

希望它对其他人有帮助。



2

您还应该查看MCollective,它可能是与多个服务器实时交互的最佳,最灵活的方式。正确设置是一项艰巨的任务,可能会稍微满足您的需求,但是它肯定胜过pssh,Clusterssh和所有其他基于SSH的解决方案。只要具备一定的Ruby知识,一旦将其安装到位,就可能无所不能。


免责声明:MCollective来自puppetlabs。
sjas 2015年

1

我问了同样的问题,因为我发现在Mac OS X上clusterssh对X11或XQuartz的依赖很烦人,最重要的是,clusterssh打开的终端窗口看起来比Terminal.app中的还要难看。

这就是我在Joerg Jaspert的博客上偶然发现基于tmux的脚本的方式:http : //blog.ganneff.de/blog/2013/03/tmux---like-screen-just-nicer.html

基本上,您键入tm ms HOST1 user@HOST2并打开一个带有两个面板的tmux窗口的会话


0

bash提示适用于简单的事情:

在servers.txt中列出服务器列表,每个服务器一行。

然后做:

$ while read $server; do ssh user@$server "command args"; done < servers.txt

1
我想要使​​用所有服务器的交互式方式。在这种情况下,bash无法提供帮助。在这种情况下,Cluster ssh效果最好,但是它的作用有限。
Farhan
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.