Alternativa de Clusterssh para administrar múltiples servidores SSH [cerrado]


11

¿Hay alguna alternativa a Clusterssh, pssh, etc. para administrar múltiples servidores basados ​​en ssh a través de una interfaz?

Una debilidad en Clusterssh es que mis servidores usan autenticación basada en clave, con contraseña para iniciar sesión, y no hay forma de iniciar sesión en los servidores utilizando la clave privada.

¿Hay alguna alternativa disponible que admita la autenticación con claves privadas?


¿Cuál es tu problema con pssh? ¿Necesita paralelo o simplemente un programa para administrar múltiples servidores SSH?
quanta

De hecho, necesito ver la salida en tiempo real de algunos tipos de comandos que ejecuto en los servidores. tal como lo hace Cluster-ssh.
Farhan

2
Echa un vistazo a psshla -Popción.
quanta

2
@Farhan, ¿por qué no usas ansible?
c4f4t0r

Respuestas:


6

Echa un vistazo a Rundeck - http://rundeck.org/


parece bueno pero estoy atascado en AGREGARle los nodos. ¿Hay alguna manera simple de agregarle servidores? ya que solo acepta archivos basados ​​en patrones xml específicos para nodos que se agregarán :(
Farhan

9
  1. Tela

    Defina sus tareas primero:

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

    Luego, ejecutando a través de la fabherramienta de línea de comandos:

    $ 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. Gerente de PAC

5

Puede ir por completo e instalar un sistema de gestión de configuración como Puppet o Chef . No ha mencionado cuántos nodos realmente está tratando de administrar, por lo que esto podría ser excesivo, pero, ciertamente, puede controlar centralmente muchas máquinas de esta manera. Si usted es pequeño en este momento, pero está creciendo, es posible que también desee configurar, por ejemplo, Chef, antes de crecer mucho más.

Si necesita ejecutar comandos ad hoc sobre un conjunto específico de nodos, puede hacer algo como knife ssh 'roles:webserver' 'hostname'(cuchillo es la herramienta de línea de comandos para chef) para ejecutar el hostnamecomando para todos los nodos que tienen el rol de servidor web.


Tengo alrededor de 15-20 servidores. Ya tengo una marioneta conmigo, pero necesito interacción en tiempo real con todos los terminales ssh para algunas tareas.
Farhan

Ah ok. Supongo que la marioneta no tiene una instalación ssh.
cjc

4

Yo uso esperan que las secuencias de comandos para automatizar los inicios de sesión (sobre todo porque tengo que pasar a través de una caja de jumb y entro en un chroot y se debe introducir una gran cantidad de contraseñas) e hicieron algunos "retoques" para la configuración de cssh. Por lo tanto, tengo este "script principal" en mi carpeta bin que, dado un "nombre / alias del servidor", me lleva al servidor que quiero y donde quiero.

En ~ / .clusterssh / config, configuré el parámetro "ssh" para que apunte a mi script, también "ssh_args" debe configurarse en algún argumento inocuo / falso, porque cssh tiene su lista de argumentos predeterminada, si se deja vacía en realidad la lista predeterminada terminará siendo para el script.

Entonces, el script (en cada ventana / terminal) recibirá estos args y 1 de los args dados al cssh, el script que recupera de un archivo para el servidor dado las credenciales establecidas y los pasos que debe seguir para llegar a donde Quiero, luego llama al "código de espera" con todos esos datos.

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

así que generalmente lo llamo con algo como esto

# cssh q4 q5 q6 q7

también funciona con "alias de clúster" que tienen el clúster "qAll q4 q5 q6 q7" Puedo llamar con cssh qAll

Espera que ayude a alguien más.



2

También debe mirar MCollective , que es probablemente la mejor y más flexible forma de interactuar con múltiples servidores en tiempo real. Es un poco difícil de configurar correctamente y puede ser un poco exagerado para sus necesidades, pero ciertamente supera a pssh, Clusterssh y todas las demás soluciones basadas en SSH. Y una vez que lo tenga en su lugar, probablemente no haya nada que no pueda hacer con él, siempre que conozca un poco de Ruby.


Descargo de responsabilidad: MCollective es de puppetlabs.
sjas

1

Me hice la misma pregunta, ya que encontré molesta la dependencia de clusterssh de X11 o XQuartz en Mac OS X, y además las ventanas de terminal abiertas por clusterssh se veían más feas que las de Terminal.app

Así es como me topé con un script basado en tmux de Joerg Jaspert en su blog: http://blog.ganneff.de/blog/2013/03/tmux---like-screen-just-nicer.html

Básicamente, escribe tm ms HOST1 user@HOST2y abre una sesión con una ventana tmux que consta de dos paneles


0

El indicador bash funciona para cosas simples:

haga una lista de servidores en server.txt, una línea por servidor.

entonces hazlo:

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

1
Quiero una forma interactiva de usar todos los servidores. bash no puede ayudar en ese caso. Cluster ssh funciona mejor en ese caso, pero es limitado.
Farhan
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.