Альтернатива Clusterssh для управления несколькими серверами SSH [закрыто]

11

Есть ли альтернатива Clusterssh, pssh и т. Д. Для управления несколькими серверами на основе ssh через один интерфейс?

Одним из недостатков Clusterssh является то, что мои серверы используют аутентификацию на основе ключей с парольной фразой для входа в систему, и нет возможности войти на серверы с помощью закрытого ключа.

Есть ли альтернатива, которая поддерживает аутентификацию с закрытыми ключами?

Фархан
источник
С чем у тебя проблема pssh? Вам нужна параллельная или просто программа для управления несколькими SSH серверами?
кванта
Мне действительно нужно видеть вывод в реальном времени нескольких типов команд, которые я запускаю на серверах. так же, как это делает Cluster-ssh.
Фархан
2
Взгляните на pssh«S -Pвариант.
кванта
2
@ Фархан, почему ты не используешь ANSIBLE?
c4f4t0r

Ответы:

6

Взгляните на Rundeck - http://rundeck.org/

Том
источник
это кажется хорошим, но я плохо застрял в добавлении узлов к нему. Есть ли простой способ добавить серверы к нему? поскольку он принимает только определенные файлы на основе шаблонов xml для добавляемых узлов :(
Farhan
9
  1. ткань

    Сначала определите ваши задачи:

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

    Затем выполняется через fabинструмент командной строки:

    $ 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. PAC Manager
кванты
источник
5

Вы можете сделать все возможное и установить систему управления конфигурацией, такую ​​как Puppet или Chef . Вы не упомянули, сколько узлов вы на самом деле пытаетесь управлять, так что это может быть излишним, но, конечно, вы можете централизованно управлять многими машинами таким образом. Если вы сейчас маленький, но растете, возможно, вы захотите настроить, скажем, Chef, прежде чем вы станете намного больше.

Если вам нужно выполнить специальные команды для определенного набора узлов, вы можете сделать что-то вроде knife ssh 'roles:webserver' 'hostname'(нож - это инструмент командной строки для chef), чтобы запустить hostnameкоманду для всех узлов, имеющих роль веб-сервера.

CJC
источник
У меня около 15-20 серверов. У меня уже есть марионетка, но для некоторых задач мне нужно взаимодействие в реальном времени со всеми ssh-терминалами.
Фархан
Ах хорошо. Я полагаю, что у кукол нет средств ssh.
CJC
4

Я использую ожидаю сценарии для автоматизации входов в систему (особенно потому, что мне нужно пройти через пустое поле и войти в chroot, и нужно ввести много паролей), и я внес некоторые «изменения» в конфигурацию cssh. Итак, у меня есть этот «основной сценарий» в папке bin, которому присвоено «имя сервера / псевдоним», он переводит меня на сервер, который я хочу и где я хочу.

В ~ / .clusterssh / config я установил параметр "ssh", чтобы он указывал на мой скрипт, также для "ssh_args" должно быть установлено какое-то безобидное / поддельное аргумент, потому что cssh имеет свой список аргументов по умолчанию, если на самом деле оставить его пустым список по умолчанию окажется в сценарии.

Таким образом, сценарий (в каждом окне / терминале) будет получать эти аргументы и 1 из аргументов, переданных cssh, сценарий, который он восстанавливает из файла для данного сервера, набор учетных данных и шаги, которые он должен выполнить, чтобы получить Я хочу, тогда он вызывает «код ожидания» со всеми этими данными.

~ / .Clusterssh / конфигурации

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

поэтому я обычно называю это чем-то вроде этого

# cssh q4 q5 q6 q7

это работает также с "псевдонимами кластера", имеющими кластер "qAll q4 q5 q6 q7", который я могу вызвать с помощью cssh qAll

Надежды это помогает кому-то еще.

Lohmar ASHAR
источник
4

Я предпочитаю shmux для выполнения одной и той же команды на многих хостах параллельно.

Хостмастер
источник
2

Вам также следует обратить внимание на MCollective , который, вероятно, является лучшим и наиболее гибким способом взаимодействия с несколькими серверами в режиме реального времени. Это немного сложная задача для правильной настройки и может быть слишком много для ваших нужд, но это, безусловно, лучше, чем pssh, Clusterssh и все другие решения на основе SSH. И как только вы это сделаете, вы, вероятно, ничего не сможете с этим поделать, при условии, что вы немного знаете Ruby.

Дафф
источник
Отказ от ответственности: MCollective от кукольных.
sjas
1

Я задавал себе тот же вопрос, так как я обнаружил, что зависимость clusterssh от X11 или XQuartz от Mac OS X раздражает, и, кроме того, окна терминала, открываемые clusterssh, выглядят более страшными, чем в Terminal.app

Вот как я наткнулся на сценарий на основе tmux от Joerg Jaspert в его блоге: http://blog.ganneff.de/blog/2013/03/tmux---like-screen-just-nicer.html.

В основном вы набираете, tm ms HOST1 user@HOST2и он открывает сеанс с одним окном tmux, состоящим из двух панелей

Эндре
источник
0

Приглашение bash работает для простых вещей:

составьте список серверов в файле Servers.txt, по одной строке на сервер.

затем сделайте:

$ while read $server; do ssh user@$server "command args"; done < servers.txt
Роб Шинн
источник
1
Я хочу интерактивный способ использования всех серверов. Баш не может помочь в этом случае. Кластер ssh работает лучше всего в этом случае, но он ограничен.
Фархан