Clusterssh alternatywa do zarządzania wieloma serwerami SSH [zamknięte]

11

Czy istnieje alternatywa dla Clusterssh, pssh itp., Aby zarządzać wieloma serwerami opartymi na ssh za pośrednictwem jednego interfejsu?

Jedną słabością Clusterssh jest to, że moje serwery używają uwierzytelniania opartego na kluczach, z hasłem do logowania, i nie ma sposobu, aby zalogować się do serwerów za pomocą klucza prywatnego.

Czy jest jakaś alternatywa, która obsługuje uwierzytelnianie za pomocą kluczy prywatnych?

Farhan
źródło
Z czym masz problem pssh? Potrzebujesz równoległego czy tylko programu do zarządzania wieloma serwerami SSH?
kwanty
faktycznie muszę zobaczyć dane wyjściowe w czasie rzeczywistym kilku rodzajów poleceń uruchamianych na serwerach. podobnie jak Cluster-ssh.
Farhan
2
Spójrz na pssh„s -Popcja.
kwanty
2
@Farhan, dlaczego nie używasz ansible?
c4f4t0r

Odpowiedzi:

6

Spójrz na Rundeck - http://rundeck.org/

Tomek
źródło
wydaje się dobre, ale jestem bardzo utknięty w DODAWANIU do niego węzłów. czy istnieje prosty sposób na dodanie do niego serwerów? ponieważ akceptuje tylko określone pliki oparte na wzorcach XML dla węzłów, które mają zostać dodane :(
Farhan
9
  1. Tkanina

    Najpierw określ swoje zadania:

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

    Następnie wykonanie za pomocą fabnarzędzia wiersza poleceń:

    $ 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. Menedżer PAC
kwanty
źródło
5

Możesz przejść cały wieprz i zainstalować system zarządzania konfiguracją, taki jak Puppet lub Chef . Nie wspomniałeś o tym, ile węzłów faktycznie próbujesz zarządzać, więc może to być przesada, ale z pewnością możesz w ten sposób centralnie kontrolować wiele komputerów. Jeśli jesteś teraz mały, ale rośniesz, możesz też chcieć założyć szefa kuchni, zanim staniesz się znacznie większy.

Jeśli potrzebujesz uruchamiać polecenia ad hoc na określonym zestawie węzłów, możesz zrobić coś takiego knife ssh 'roles:webserver' 'hostname'(nóż jest narzędziem wiersza polecenia szefa kuchni), aby uruchomić hostnamepolecenie dla wszystkich węzłów, które pełnią rolę serwera WWW.

cjc
źródło
mam około 15-20 serwerów. mam już ze sobą marionetkę, ale do niektórych zadań potrzebuję interakcji w czasie rzeczywistym ze wszystkimi terminalami ssh.
Farhan
Ach, okej. Chyba kukiełka nie ma obiektu ssh.
cjc
4

Używam skryptów expect do automatyzacji logowania (szczególnie dlatego, że muszę przejść przez skrzynkę jumb i wprowadzić chroot i trzeba wprowadzić wiele haseł) i zrobiłem kilka „poprawek” do konfiguracji cssh. Tak więc mam ten „główny skrypt” w folderze bin, który nadał „nazwę / alias serwera”, zabiera mnie na serwer, który chcę i gdzie chcę.

W ~ / .clusterssh / config ustawiłem parametr „ssh”, aby wskazywał na mój skrypt, również „ssh_args” musi być ustawione na jakiś nieszkodliwy / fałszywy arg, to dlatego, że cssh ma domyślną listę argumentów, jeśli faktycznie jest pusta domyślna lista kończy się na skrypcie.

Tak więc skrypt (w każdym oknie / terminalu) otrzyma te argumenty i 1 argumenty podane cssh, skrypt, który odzyskuje z pliku dla danego serwera, ustawione poświadczenia i kroki, które należy wykonać, aby dotrzeć do miejsca Chcę, a następnie wywołuje „kod oczekiwania” z wszystkimi tymi danymi.

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

więc zwykle nazywam to tak

# cssh q4 q5 q6 q7

działa również z „aliasami klastrów” posiadającymi klaster „qWszystkie q4 q5 q6 q7” Mogę wywoływać za pomocą cssh qAll

Ma nadzieję, że pomoże to komukolwiek innemu.

Lohmar ASHAR
źródło
4

Wolę shmux do wykonywania tego samego polecenia na wielu hostach równolegle.

hostmaster
źródło
2

Powinieneś także spojrzeć na MCollective , który jest prawdopodobnie najlepszym i najbardziej elastycznym sposobem interakcji z wieloma serwerami w czasie rzeczywistym. Prawidłowe skonfigurowanie jest trochę trudne i może być nieco lepsze niż twoje potrzeby, ale z pewnością przewyższa pssh, Clusterssh i wszystkie inne rozwiązania oparte na SSH. A kiedy już go umieścisz, prawdopodobnie nic nie możesz z tym zrobić, pod warunkiem, że znasz trochę Ruby.

daff
źródło
Oświadczenie: MCollective pochodzi od puppetlabs.
sjas 23.03.15
1

Zadałem sobie to samo pytanie, ponieważ zależało mi na klastrowaniu od X11 lub XQuartz na Mac OS X, a ponadto okna terminali otwierane przez clusterssh wyglądały brzydiej niż na Terminal.app

Tak natknąłem się na skrypt oparty na tmuxie autorstwa Joerga Jasperta na jego blogu: http://blog.ganneff.de/blog/2013/03/tmux---like-screen-just-nicer.html

Zasadniczo tm ms HOST1 user@HOST2piszesz i otwiera sesję z jednym oknem tmux składającym się z dwóch okien

Endre
źródło
0

Podpowiedź bash działa na proste rzeczy:

utwórz listę serwerów w server.txt, po jednej linii na serwer.

następnie wykonaj:

$ while read $server; do ssh user@$server "command args"; done < servers.txt
Rob Shinn
źródło
1
Chcę interaktywny sposób korzystania ze wszystkich serwerów. bash nie mogę pomóc w takim przypadku. Cluster ssh działa najlepiej w tym przypadku, ale jest ograniczony.
Farhan