複数のSSHサーバーを管理するためのclustersshの代替案[終了]


11

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

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

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


あなたの問題はpssh何ですか?複数のSSHサーバーを管理するために、並列または単なるプログラムが必要ですか?
量子

サーバーで実行するいくつかのタイプのコマンドのリアルタイム出力を実際に確認する必要があります。Cluster-sshと同じように。
ファルハン

2
pssh-Pオプションを見てください。
クォンタム2012

2
@Farhanなぜansibleを使用しないのですか?
c4f4t0r

回答:


6

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


それは良いようですが、それにノードを追加することにひどく行き詰まっています。それにサーバーを追加する簡単な方法はありますか?追加するノードの特定のxmlパターンベースのファイルのみを受け入れるため:(
Farhan

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

5

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

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


私は約15〜20台のサーバーを持っています。パペットはすでに持っていますが、一部のタスクではすべてのssh端末とのリアルタイムの対話が必要です。
ファルハン

あ、そう。人形にはssh機能がないと思います。
cjc 2012

4

期待スクリプトを使用てログインを自動化し(特に、ジャンボボックスを通過して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で呼び出すことができます。

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



2

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


免責事項:MCollectiveは操り人形研究所からです。
sjas 2015年

1

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ウィンドウでセッションが開きます


0

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

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

次に行います:

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

1
インタラクティブな方法ですべてのサーバーを使用したい。その場合、bashは役に立ちません。その場合、クラスターsshが最適ですが、制限があります。
ファルハン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.