web-dev-qa-db-ja.com

複数のSSHサーバーを管理するためのclustersshの代替

1つのインターフェイスを介して複数のSSHベースのサーバーを管理するためのClusterssh、psshなどの代替手段はありますか?

Clustersshの1つの弱点は、私のサーバーがログインにpasshpraseを使用した鍵ベースの認証を使用し、秘密鍵を使用してサーバーにログインする方法がないことです。

秘密鍵による認証をサポートする代替手段はありますか?

11
Farhan

Rundeckをご覧ください- http://rundeck.org/

6
Tom
  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. Gnome接続マネージャー
  3. PACマネージャー
9
quanta

独り占めして 構成管理システムPuppet または Chef のようにインストールできます。実際に管理しようとしているノードの数については言及していません。そのため、これはやり過ぎかもしれませんが、多くのマシンをこの方法で集中管理できます。あなたが今は小さいが成長している場合は、それより大きくなる前に、たとえばChefを設定することもできます。

特定のノードセットでアドホックコマンドを実行する必要がある場合は、knife ssh 'roles:webserver' 'hostname'(ナイフはchefのコマンドラインツールです)は、webserverロールを持つすべてのノードに対してhostnameコマンドを実行します。

5
cjc

私は expect スクリプトを使用してログインを自動化し(特に、ジャンブボックスを通過してchrootに入力する必要があり、多数のパスワードを入力する必要があるため)、csshの構成にいくつかの「微調整」を行いました。したがって、「サーバー名/エイリアス」が指定されたbinフォルダーにこの「メインスクリプト」があり、必要なサーバーに、必要な場所に移動します。

〜/ .clusterssh/configで、スクリプトを指すように「ssh」パラメーターを設定しました。また、「ssh_args」もいくつかの無害な/偽の引数に設定する必要があります。これは、csshにデフォルトの引数リストがあるためです。デフォルトのリストは最終的にスクリプトになります。

そのため、スクリプト(各ウィンドウ/ターミナル)は、この引数とcsshに渡された引数の1つを受け取ります。スクリプトは、指定されたサーバーのファイルから回復し、資格情報セットと、そこに到達するために実行する必要がある手順を実行します。必要なのは、そのすべてのデータで「期待コード」を呼び出すことです。

〜/ .clusterssh/config

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」というクラスターを持つ「クラスターエイリアス」でも機能します。csshqAllで呼び出すことができます。

それが他の人を助けることを願っています。

4
Lohmar ASHAR

多くのホストで同じコマンドを並列に実行するには、 shmux を使用します。

4
hostmaster

MCollective も確認する必要があります。これは、複数のサーバーとリアルタイムで対話するためのおそらく最も優れた、最も柔軟な方法です。正しく設定するのは少し手間がかかり、ニーズによっては少し上になるかもしれませんが、pssh、Clusterssh、および他のすべてのSSHベースのソリューションに勝るものは確かです。また、Rubyについて少し知っていれば、いったん配置したら、それを使ってできないことはおそらくありません。

2
daff

ClustersshがMac OS Xの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そして、2つのペインで構成される1つのtmuxウィンドウでセッションを開きます

1
Endre

Bashプロンプトは単純なものに対して機能します。

servers.txtにサーバーのリストを作成します(サーバーごとに1行)。

次に行います:

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