여러 SSH 서버 관리를위한 Clusterssh 대안 [닫기]


11

하나의 인터페이스를 통해 여러 ssh 기반 서버를 관리하기위한 Clusterssh, pssh 등의 대안이 있습니까?

Clusterssh의 한 가지 약점은 내 서버가 암호 기반 로그인으로 키 기반 인증을 사용하고 개인 키를 사용하여 서버에 로그인 할 수있는 방법이 없다는 것입니다.

개인 키 인증을 지원하는 다른 대안이 있습니까?


무엇에 문제가 pssh있습니까? 여러 SSH 서버를 관리하려면 병렬 또는 프로그램이 필요합니까?
quanta

실제로 서버에서 실행되는 몇 가지 유형의 명령의 실시간 출력을 볼 필요가 있습니다. Cluster-ssh와 마찬가지로
Farhan

2
pssh-P옵션을 살펴보십시오 .
quanta

2
@Farhan 왜 ansible을 사용하지 않습니까?
c4f4t0r 2016 년

답변:


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. 그놈 연결 관리자
  3. PAC 관리자

5

당신은 전체 돼지를 가서 설치할 수있는 구성 관리 시스템 과 같은 인형 이나 요리사 . 실제로 관리하려는 노드 수에 대해서는 언급하지 않았으므로 이는 과도 할 수 있지만, 많은 방식으로 많은 머신을 중앙에서 제어 할 수 있습니다. 지금은 작지만 성장하고 있다면 훨씬 더 커지기 전에 Chef를 설정하는 것이 좋습니다.

특정 노드 세트에 대해 임시 명령 knife ssh 'roles:webserver' 'hostname'을 실행 hostname해야하는 경우 웹 서버 역할이있는 모든 노드에 대해 명령 을 실행하기 위해 (knife는 chef의 명령 행 도구 임) 수행 할 수 있습니다.


나는 약 15-20 server.i가 이미 나와 꼭두각시를 가지고 있지만 일부 작업을 위해 모든 ssh 터미널과 실시간 상호 작용이 필요합니다.
Farhan

그래. 꼭두각시에는 ssh 기능이없는 것 같습니다.
cjc

4

나는 예상 스크립트를 사용 하여 로그인을 자동화합니다 (특히 점보 상자를 통과하고 chroot를 입력해야하며 많은 암호를 입력해야하기 때문에) cssh의 구성에 약간의 "조정"을했습니다. 따라서 "서버 이름 / 별칭"이 지정된 bin 폴더에이 "메인 스크립트"가 있으며 원하는 서버와 원하는 서버로 이동합니다.

~ / .clusterssh / config에서 "ssh"매개 변수를 스크립트를 가리 키도록 설정했습니다. 또한 "ssh_args"도 무해한 / 가짜 arg로 설정해야합니다. 왜냐하면 실제로 비워두면 cssh에 기본 args 목록이 있기 때문입니다. 기본 목록은 스크립트가됩니다.

따라서 스크립트 (각 창 / 터미널에 있음)는이 인수와 cssh에 지정된 인수 중 하나를 수신합니다.이 스크립트는 지정된 서버에 대한 파일에서 자격 증명이 설정 한 위치와 도착하기 위해 수행해야하는 단계를 복구합니다. 원하는 경우 모든 데이터와 함께 "예상 코드"를 호출합니다.

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

그래서 나는 보통 이것을 이런 식으로 부릅니다

# cssh q4 q5 q6 q7

클러스터가 "qAll q4 q5 q6 q7"인 "클러스터 별명"에서도 작동합니다. cssh qAll로 호출 할 수 있습니다.

다른 사람에게 도움이되기를 바랍니다.



2

또한 여러 서버와 실시간으로 상호 작용하는 가장 좋고 유연한 방법 인 MCollective 도 살펴 봐야 합니다. 올바르게 설정하는 것은 약간의 임무이며 필요에 따라 약간 위에있을 수 있지만 pssh, Clusterssh 및 기타 모든 SSH 기반 솔루션을 확실히 능가합니다. 그리고 일단 루비를 알고 있다면, 당신이 그것을 할 수 없을 것입니다.


면책 조항 : MCollective는 꼭두각시에서 온 것입니다.
sjas

1

Mac OS X에서 X11 또는 XQuartz에 대한 clusterssh의 의존성이 성가신 것을 발견하고 clusterssh에 의해 열린 터미널 창이 Terminal.app의 창보다 못 생겼기 때문에 나 자신도 같은 질문을했습니다.

그것이 그의 블로그에서 Joerg Jaspert의 tmux 기반 스크립트를 우연히 발견 한 방법입니다. http://blog.ganneff.de/blog/2013/03/tmux---like-screen-just-nicer.html

기본적으로 입력하면 tm ms HOST1 user@HOST2두 개의 창으로 구성된 하나의 tmux 창이있는 세션이 열립니다.


0

bash 프롬프트는 다음과 같은 간단한 작업을 수행합니다.

server.txt에 서버 당 한 줄씩 서버 목록을 만듭니다.

그런 다음 수행하십시오.

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

1
모든 서버를 사용하는 대화 형 방법을 원합니다. 이 경우 bash는 도울 수 없습니다. 이 경우 클러스터 ssh가 가장 효과적이지만 제한적입니다.
Farhan
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.