Alternativa a Clusterssh per la gestione di più server SSH [chiuso]


11

Esiste un'alternativa a Clusterssh, pssh ecc. Per gestire più server basati su ssh attraverso un'unica interfaccia?

Un punto debole di Clusterssh è che i miei server usano l'autenticazione basata su chiave, con passhprase per il login e non c'è modo di accedere ai server usando la chiave privata.

C'è qualche alternativa disponibile che supporta l'autenticazione con chiavi private?


Qual è il tuo problema pssh? Hai bisogno di un programma parallelo o solo per gestire più server SSH?
quanta

in realtà ho bisogno di vedere l'output in tempo reale di alcuni tipi di comandi che eseguo sui server. proprio come fa Cluster-ssh.
Farhan,

2
Date un'occhiata a pssh's -Popzione.
quanta

2
@Farhan perché non usi ansible?
c4f4t0r,

Risposte:


6

Dai un'occhiata a Rundeck - http://rundeck.org/


sembra buono, ma sono fortemente bloccato ad AGGIUNGERE I nodi ad esso. c'è un modo semplice per aggiungere server ad esso? poiché accetta solo file specifici basati su pattern xml per i nodi da aggiungere :(
Farhan,

9
  1. Tessuto

    Definisci prima le tue attività:

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

    Quindi eseguendo tramite lo fabstrumento da riga di comando:

    $ 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. Gestione connessione Gnome
  3. Manager PAC

5

Puoi fare tutto e installare un sistema di gestione della configurazione come Puppet o Chef . Non hai menzionato quanti nodi stai effettivamente cercando di gestire, quindi questo potrebbe essere eccessivo, ma, certamente, puoi controllare centralmente molte macchine in questo modo. Se sei piccolo in questo momento, ma stai crescendo, potresti anche voler creare, per esempio, Chef, prima di diventare molto più grande.

Se è necessario eseguire comandi ad hoc su un set specifico di nodi, è possibile eseguire un'operazione simile knife ssh 'roles:webserver' 'hostname'(coltello è lo strumento da riga di comando per chef) per eseguire il hostnamecomando per tutti i nodi che hanno il ruolo di server web.


ho circa 15-20 server. Ho già un pupazzo con me, ma ho bisogno di interazione in tempo reale con tutti i terminali SSH per alcune attività.
Farhan,

Ah ok. Immagino che il burattino non abbia una struttura SSH.
cjc,

4

Io uso si aspettano da script per automatizzare gli accessi (soprattutto perché devo passare attraverso una scatola dello stipite ed entro in un chroot e un sacco di password deve essere inserito) e fatto alcuni "ritocchi" per la configurazione del CSSS. Quindi, ho questo "script principale" nella mia cartella bin che ha dato un "nome / alias server" che mi porta nel server che voglio e dove voglio.

Nella ~ / .clusterssh / config ho impostato il parametro "ssh" in modo che punti al mio script, anche "ssh_args" deve essere impostato su un argomento innocuo / falso, perché cssh ha la sua lista di argomenti predefinita, se lasciato vuoto in realtà l'elenco predefinito finirà per essere lo script.

Quindi lo script (in ogni finestra / terminale) riceverà questo argomento e 1 degli argomenti dati al cssh, lo script che recupera da un file per il server dato le credenziali impostate e i passi che deve fare per arrivare dove Voglio, quindi chiama il "codice di attesa" con tutti quei dati.

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

quindi di solito lo chiamo con qualcosa del genere

# cssh q4 q5 q6 q7

funziona anche con "alias cluster" con cluster "qTutti q4 q5 q6 q7" Posso chiamare con cssh qTutti

Spero che sia d'aiuto a chiunque altro.



2

Dovresti anche guardare MCollective , che è probabilmente il modo migliore e più flessibile per interagire con più server in tempo reale. Configurare correttamente è un po 'complicato e può essere un po' esagerato per le tue esigenze, ma sicuramente batte pssh, Clusterssh e tutte le altre soluzioni basate su SSH. E una volta che hai messo in atto, probabilmente non c'è niente che non puoi farne, a condizione che tu sappia un po 'di Ruby.


Disclaimer: MCollective proviene da marionette.
sjas,

1

Mi sono posto la stessa domanda, dato che ho trovato fastidiosa la dipendenza di Clusterssh da X11 o XQuartz su Mac OS X, e per di più le finestre dei terminali aperte da Cluster sembravano più brutte di quelle di Terminal.app

È così che mi sono imbattuto in uno script basato su tmux di Joerg Jaspert sul suo blog: http://blog.ganneff.de/blog/2013/03/tmux---like-screen-just-nicer.html

Fondamentalmente si digita tm ms HOST1 user@HOST2e si apre una sessione con una finestra di tmux composta da due riquadri


0

Il prompt di bash funziona per cose semplici:

crea un elenco di server in server.txt, una riga per server.

Quindi fa:

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

1
Voglio un modo interattivo per utilizzare tutti i server. bash non può aiutare in quel caso. Cluster ssh funziona meglio in quel caso, ma è limitato.
Farhan,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.