Clusterssh-Alternative zur Verwaltung mehrerer SSH-Server [geschlossen]

11

Gibt es eine Alternative zu Clusterssh, pssh usw., um mehrere ssh-basierte Server über eine Schnittstelle zu verwalten?

Eine Schwachstelle in Clusterssh besteht darin, dass meine Server eine schlüsselbasierte Authentifizierung mit Passhprase zum Anmelden verwenden und es keine Möglichkeit gibt, sich mit dem privaten Schlüssel bei Servern anzumelden.

Gibt es eine Alternative, die die Authentifizierung mit privaten Schlüsseln unterstützt?

Farhan
quelle
Womit ist dein Problem pssh? Benötigen Sie parallel oder nur ein Programm, um mehrere SSH-Server zu verwalten?
Quanten
Ich muss tatsächlich die Echtzeitausgabe einiger Arten von Befehlen sehen, die ich auf den Servern ausführe. genau wie Cluster-ssh.
Farhan
2
Schauen Sie sich psshdie -POption an.
Quanten
2
@ Farhan warum benutzt du nicht ansible?
c4f4t0r

Antworten:

6

Werfen Sie einen Blick auf Rundeck - http://rundeck.org/

Tom
quelle
es scheint gut zu sein, aber ich bin schlecht darin, die Knoten dazu hinzuzufügen. Gibt es eine einfache Möglichkeit, Server hinzuzufügen? da es nur bestimmte XML-Muster-basierte Dateien für hinzuzufügende Knoten akzeptiert :(
Farhan
9
  1. Stoff

    Definieren Sie zuerst Ihre Aufgaben:

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

    Anschließend über das fabBefehlszeilentool ausführen :

    $ 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-Verbindungsmanager
  3. PAC Manager
Quanten
quelle
5

Sie können ein Konfigurationsmanagementsystem wie Puppet oder Chef installieren . Sie haben nicht erwähnt, wie viele Knoten Sie tatsächlich verwalten möchten. Dies ist möglicherweise ein Overkill, aber Sie können auf diese Weise natürlich viele Maschinen zentral steuern. Wenn Sie gerade klein sind, aber wachsen, möchten Sie vielleicht auch Chefkoch gründen, bevor Sie so viel größer werden.

Wenn Sie Ad-hoc-Befehle über einen bestimmten Knotensatz ausführen müssen, können Sie knife ssh 'roles:webserver' 'hostname'den hostnameBefehl für alle Knoten ausführen , die die Webserverrolle haben (Messer ist das Befehlszeilenprogramm für den Chef) .

cjc
quelle
Ich habe ungefähr 15-20 Server. Ich habe bereits Marionette bei mir, aber ich brauche Echtzeit-Interaktion mit allen SSH-Terminals für einige Aufgaben.
Farhan
Ah, OK. Ich denke, Puppe hat keine SSH-Einrichtung.
cjc
4

Ich verwende Expect- Skripte, um die Anmeldungen zu automatisieren (insbesondere, weil ich durch ein Jumb-Box gehen und eine Chroot eingeben muss und viele Passwörter eingegeben werden müssen) und habe einige "Optimierungen" an der Konfiguration von CSSH vorgenommen. Ich habe also dieses "Hauptskript" in meinem bin-Ordner, das mit einem "Servernamen / Alias" zu dem Server führt, den ich möchte und wo ich möchte.

In der Datei ~ / .clusterssh / config habe ich den Parameter "ssh" so eingestellt, dass er auf mein Skript verweist. Außerdem muss "ssh_args" auf ein harmloses / falsches Argument gesetzt werden. Dies liegt daran, dass cssh seine Standardargumentliste hat, wenn sie tatsächlich leer bleibt Die Standardliste befindet sich im Skript.

Das Skript (in jedem Fenster / Terminal) erhält also diese Argumente und eines der Argumente, die dem CSSH gegeben wurden, das Skript, das es aus einer Datei für den angegebenen Server wiederherstellt, die festgelegten Anmeldeinformationen und die Schritte, die es ausführen muss, um wo anzukommen Ich möchte, dann ruft es den "Expect Code" mit all diesen Daten auf.

~ / .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

deshalb nenne ich es normalerweise so

# cssh q4 q5 q6 q7

Es funktioniert auch mit "Cluster-Aliasen" mit dem Cluster "qAll q4 q5 q6 q7". Ich kann mit cssh qAll aufrufen

Hoffe es hilft jemand anderem.

Lohmar ASHAR
quelle
4

Ich bevorzuge shmux, um denselben Befehl auf vielen Hosts parallel auszuführen.

Hostmaster
quelle
2

Sie sollten sich auch MCollective ansehen , das wahrscheinlich die beste und flexibelste Möglichkeit ist, mit mehreren Servern in Echtzeit zu interagieren. Es ist ein bisschen mühsam, sich richtig einzurichten, und es ist vielleicht etwas übertrieben für Ihre Bedürfnisse, aber es übertrifft sicherlich pssh, Clusterssh und alle anderen SSH-basierten Lösungen. Und wenn Sie es einmal installiert haben, können Sie wahrscheinlich nichts mehr damit anfangen, vorausgesetzt, Sie kennen ein bisschen Ruby.

daff
quelle
Haftungsausschluss: MCollective stammt von Puppetlabs.
Sjas
1

Ich habe mir dieselbe Frage gestellt, da ich die Abhängigkeit von Clusterssh von X11 oder XQuartz unter Mac OS X als störend empfand und außerdem die von Clusterssh geöffneten Terminalfenster hässlicher aussahen als die in Terminal.app

So bin ich auf ein tmux-basiertes Skript von Jörg Jaspert in seinem Blog gestoßen: http://blog.ganneff.de/blog/2013/03/tmux---like-screen-just-nicer.html

Grundsätzlich tippen Sie tm ms HOST1 user@HOST2und es öffnet sich eine Sitzung mit einem tmux-Fenster, das aus zwei Fenstern besteht

Endre
quelle
0

Die Bash-Eingabeaufforderung funktioniert für einfache Dinge:

Erstellen Sie eine Liste der Server in servers.txt, eine Zeile pro Server.

dann mach:

$ while read $server; do ssh user@$server "command args"; done < servers.txt
Rob Shinn
quelle
1
Ich möchte eine interaktive Möglichkeit, alle Server zu verwenden. Bash kann in diesem Fall nicht helfen. Cluster ssh funktioniert in diesem Fall am besten, ist aber begrenzt.
Farhan