Alternative à Clusterssh pour gérer plusieurs serveurs SSH [fermé]

11

Existe-t-il une alternative à Clusterssh, pssh, etc., pour gérer plusieurs serveurs basés sur ssh via une seule interface?

Une des faiblesses de Clusterssh est que mes serveurs utilisent l'authentification par clé, avec mot de passe pour se connecter, et il n'y a aucun moyen de se connecter aux serveurs à l'aide de la clé privée.

Existe-t-il une alternative disponible qui prend en charge l'authentification avec des clés privées?

Farhan
la source
Quel est votre problème pssh? Avez-vous besoin d'un programme parallèle ou simplement d'un programme pour gérer plusieurs serveurs SSH?
quanta
J'ai en fait besoin de voir la sortie en temps réel de quelques types de commandes que j'exécute sur les serveurs. tout comme le fait Cluster-ssh.
Farhan
2
Jetez un oeil à psshl' -Poption de.
quanta
2
@Farhan pourquoi vous n'utilisez pas ansible?
c4f4t0r

Réponses:

6

Jetez un oeil sur Rundeck - http://rundeck.org/

À M
la source
cela semble bien mais je suis mal collé à AJOUTER les nœuds. existe-t-il un moyen simple d'y ajouter des serveurs? car il n'accepte que des fichiers basés sur des modèles xml spécifiques pour les nœuds à ajouter :(
Farhan
9
  1. en tissu

    Définissez d'abord vos tâches:

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

    Puis exécutez via l' faboutil de ligne de commande:

    $ 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 Connection Manager
  3. Gestionnaire PAC
quanta
la source
5

Vous pouvez aller tout seul et installer un système de gestion de configuration comme Puppet ou Chef . Vous n'avez pas mentionné le nombre de nœuds que vous essayez de gérer, donc cela peut être exagéré, mais, certainement, vous pouvez contrôler de manière centralisée de nombreuses machines de cette façon. Si vous êtes petit en ce moment, mais que vous grandissez, vous voudrez peut-être également installer, par exemple, le chef, avant de devenir beaucoup plus gros.

Si vous devez exécuter des commandes ad hoc sur un ensemble spécifique de nœuds, vous pouvez faire quelque chose comme knife ssh 'roles:webserver' 'hostname'(couteau est l'outil de ligne de commande pour chef) pour exécuter la hostnamecommande pour tous les nœuds qui ont le rôle de serveur Web.

cjc
la source
j'ai environ 15-20 server.i ai déjà des marionnettes avec moi, mais j'ai besoin d'une interaction en temps réel avec tous les terminaux ssh pour certaines tâches.
Farhan
Ah ok. Je suppose que la marionnette n'a pas d'installation ssh.
cjc
4

J'utilise des scripts expect pour automatiser les connexions (en particulier parce que je dois passer par une boîte de jumb et entrer un chroot et beaucoup de mots de passe doivent être entrés) et j'ai fait quelques "ajustements" à la configuration de cssh. Donc, j'ai ce "script principal" dans mon dossier bin qui, étant donné un "nom / alias de serveur", il m'emmène sur le serveur que je veux et où je veux.

Dans le fichier ~ / .clusterssh / config, j'ai défini le paramètre "ssh" pour pointer vers mon script, "ssh_args" doit également être défini sur un argument inoffensif / faux, car cssh a sa liste d'arguments par défaut, si elle est laissée vide en fait la liste par défaut finira par être au script.

Ainsi, le script (dans chaque fenêtre / terminal) recevra ces arguments et 1 des arguments donnés au CSS, le script qu'il récupère à partir d'un fichier pour le serveur donné, les informations d'identification définies et les étapes à suivre pour arriver où Je veux, puis il appelle le "code attendu" avec toutes ces données.

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

donc je l'appelle généralement avec quelque chose comme ça

# cssh q4 q5 q6 q7

ça marche aussi avec les "alias de cluster" ayant le cluster "qAll q4 q5 q6 q7" je peux appeler avec cssh qAll

J'espère que cela aide quelqu'un d'autre.

Lohmar ASHAR
la source
4

Je préfère shmux pour exécuter la même commande sur de nombreux hôtes en parallèle.

hostmaster
la source
2

Vous devriez également regarder MCollective , qui est probablement le meilleur moyen et le plus flexible d'interagir avec plusieurs serveurs en temps réel. C'est un peu une entreprise de configurer correctement et peut être un peu exagéré pour vos besoins, mais cela bat certainement pssh, Clusterssh et toutes les autres solutions basées sur SSH. Et une fois que vous l'avez en place, il n'y a probablement rien que vous ne puissiez pas faire avec, à condition que vous connaissiez un peu Ruby.

daff
la source
Avertissement: MCollective est de puppetlabs.
sjas
1

Je me suis posé la même question, car j'ai trouvé la dépendance de clusterssh envers X11 ou XQuartz sur Mac OS X ennuyeuse, et en plus les fenêtres de terminal ouvertes par clusterssh semblaient plus laides que celles de Terminal.app

C'est ainsi que je suis tombé sur un script basé sur tmux de Joerg Jaspert sur son blog: http://blog.ganneff.de/blog/2013/03/tmux---like-screen-just-nicer.html

Fondamentalement, vous tapez tm ms HOST1 user@HOST2et il ouvre une session avec une fenêtre tmux composée de deux volets

Endre
la source
0

L'invite bash fonctionne pour des choses simples:

faire une liste de serveurs dans servers.txt, une ligne par serveur.

alors fais:

$ while read $server; do ssh user@$server "command args"; done < servers.txt
Rob Shinn
la source
1
je veux une manière interactive d'utiliser tous les serveurs. bash ne peut pas aider dans ce cas. Le cluster ssh fonctionne mieux dans ce cas, mais il est limité.
Farhan