Alternativa Clusterssh para gerenciar vários servidores SSH [fechado]


11

Existe alguma alternativa ao Clusterssh, pssh etc, para gerenciar vários servidores baseados em ssh através de uma interface?

Um ponto fraco do Clusterssh é que meus servidores usam autenticação baseada em chave, com passhprase para efetuar login, e não há como fazer login em servidores usando a chave privada.

Existe alguma alternativa disponível que suporte autenticação com chaves privadas?


Qual é o seu problema pssh? Você precisa de um programa paralelo ou apenas um para gerenciar vários servidores SSH?
Quanta

Na verdade, eu preciso ver a saída em tempo real de alguns tipos de comandos que eu executo nos servidores. assim como o Cluster-ssh faz.
24512 Farhan

2
Dê uma olhada em pssh's -Popção.
quanta

2
@ Farhan, por que você não usa o ansible?
C4f4t0r

Respostas:


6

Dê uma olhada no Rundeck - http://rundeck.org/


parece bom, mas estou muito preso em adicionar os nós a ele. existe uma maneira simples de adicionar servidores a ele? uma vez que só aceita arquivos baseada em padrões XML específico para nós para ser adicionado :(
Farhan

9
  1. Tecido

    Defina suas tarefas primeiro:

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

    Em seguida, execute através da fabferramenta de linha de 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. Gerenciador de Conexão Gnome
  3. Gerente de PAC

5

Você pode ficar louco e instalar um sistema de gerenciamento de configuração como Puppet ou Chef . Você não mencionou quantos nós realmente está tentando gerenciar; portanto, isso pode ser um exagero, mas certamente você pode controlar centralmente muitas máquinas dessa maneira. Se você é pequeno agora, mas está crescendo, também pode querer configurar, por exemplo, Chef, antes de ficar muito maior.

Se você precisar executar comandos ad hoc em um conjunto específico de nós, poderá executar algo como knife ssh 'roles:webserver' 'hostname'(faca é a ferramenta de linha de comando do chef) para executar o hostnamecomando para todos os nós com a função de servidor da web.


Eu tenho cerca de 15-20 server.i já tenho fantoche comigo, mas eu preciso de interação em tempo real com todos os terminais ssh para algumas tarefas.
24512 Farhan

Ah ok. Eu acho que o fantoche não tem uma instalação ssh.
CJC

4

Eu uso scripts expect para automatizar os logins (especialmente porque tenho que passar por uma caixa de jumb e inserir um chroot e muitas senhas devem ser inseridas) e fiz alguns "ajustes" na configuração do cssh. Então, eu tenho esse "script principal" na minha pasta bin que, devido ao "nome / alias do servidor", leva-me ao servidor que desejo e para onde quero.

No ~ / .clusterssh / config, configurei o parâmetro "ssh" para apontar para o meu script, também "ssh_args" deve ser definido como algum argumento inócuo / falso, é porque o cssh tem sua lista de argumentos padrão, se deixado vazio na verdade a lista padrão acabará sendo no script.

Portanto, o script (em cada janela / terminal) receberá esses argumentos e 1 dos argumentos fornecidos ao cssh, o script que recupera de um arquivo para o servidor especificado, as credenciais definidas e as etapas que ele deve executar para chegar onde Eu quero, então ele chama o "código esperado" com todos esses dados.

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

então eu costumo chamá-lo com algo assim

# cssh q4 q5 q6 q7

está funcionando também com "aliases de cluster" com o cluster "qAll q4 q5 q6 q7" posso chamar com cssh qAll

Espera que ajude mais alguém.



2

Você também deve examinar o MCollective , que é provavelmente a melhor e mais flexível maneira de interagir com vários servidores em tempo real. É um pouco complicado configurar corretamente e pode ser um pouco exagerado para as suas necessidades, mas certamente supera o pssh, o Clusterssh e todas as outras soluções baseadas em SSH. E uma vez instalado, provavelmente não há nada que você não possa fazer, desde que conheça um pouco de Ruby.


Isenção de responsabilidade: MCollective é de puppetlabs.
S28 /

1

Fiz a mesma pergunta a mim mesmo, pois achei a dependência do clusterssh no X11 ou XQuartz no Mac OS X irritante e, além disso, as janelas do terminal abertas pelo clusterssh pareciam mais feias do que as do Terminal.app

Foi assim que me deparei com um script baseado em tmux de Joerg Jaspert em seu blog: http://blog.ganneff.de/blog/2013/03/tmux---like-screen-just-nicer.html

Basicamente, você digita tm ms HOST1 user@HOST2e abre uma sessão com uma janela tmux composta por dois painéis


0

O prompt do bash funciona para coisas simples:

faça uma lista de servidores em servers.txt, uma linha por servidor.

então faça:

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

1
Eu quero uma maneira interativa de usar todos os servidores. bash não pode ajudar nesse caso. O cluster ssh funciona melhor nesse caso, mas é limitado.
precisa
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.