IT/리눅스마스터1급

ssh 원격 명령 실행

알콩달콩아빠 2023. 8. 16. 14:33
728x90
반응형

한줄 명령 실행

여려줄 명령 실행

원격 스크립트 실행

별도의 쉘스크립트를 만들고 원격에 스크립트 해석기를 실행시키고 파이프나 리다이렉션으로 보내는 방법

Perl 스크립트를 ssh를 통해 실행

 

이것을 기초로 여러 서버에 명령을 내리려면 다음처럼 서버의 리스트를 만들고 리스트에 대해 루프를 돌면서 위의 명령을 서버별로 실행하면 될 것이다.

 

다중 서버에 스크립트를 실행

 

이렇게 하면 문제는 순차적으로 실행을 하기 때문에 한 서버씩 실행이 끝날 때 까지 기다려야 해서 속도가 늦고 나중에 결과를 보기가 힘들다는 것이다.

 

그러면

 

ssh $m sh < test_script.sh

줄을 다음과 같이

ssh $m sh < test_script.sh > $m.log &

 

고치면 각 ssh 명령이 fork되어서 백그라운드로 돌고 각 서버에 대한 결과는 서버이름.log 파일로 남게 된다. ( 작업결과는 *.log 파일들에 대해 grep이나 기타 유틸리티로 일괄적으로 확인 가능할 것이다. )

 

지금까지는 별도의 프로그램을 쓰지 않고 순수하게 기본 명령과 쉘스크립트 가지고 하는 방법이다. 하지만 이런 류의 작업은 다수의 서버를 관리 할 때 빈번하게 발생하므로 좀 더 많은 기능을 지원하면서 이런 작업을 해주는 프로그램이 많다.

 

shmux 라는 프로그램이 그런 것 중 하나인데 http://web.taranis.org/shmux/ 에 가보면 아랫쪽에 비슷한 기능을 하는 다음과 같은 프로그램 리스트가 쭉 있다.

 

트러블 슈팅 

키 교환 실패

Unable to negotiate with UNKNOWN port 65535: no matching key exchange method found. Their offer: diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1

해결법

/etc/ssh/ssh_config 수정
주석 해제 
   Ciphers aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,3des-cbc
기능 추가 
    HostkeyAlgorithms ssh-dss,ssh-rsa
    KexAlgorithms +diffie-hellman-group1-sha1

최종

cat /etc/ssh/ssh_config

Include /etc/ssh/ssh_config.d/*.conf

Host *
#   ForwardAgent no
#   ForwardX11 no
#   ForwardX11Trusted yes
#   PasswordAuthentication yes
#   HostbasedAuthentication no
#   GSSAPIAuthentication no
#   GSSAPIDelegateCredentials no
#   GSSAPIKeyExchange no
#   GSSAPITrustDNS no
#   BatchMode no
#   CheckHostIP yes
#   AddressFamily any
#   ConnectTimeout 0
#   StrictHostKeyChecking ask
#   IdentityFile ~/.ssh/id_rsa
#   IdentityFile ~/.ssh/id_dsa
#   IdentityFile ~/.ssh/id_ecdsa
#   IdentityFile ~/.ssh/id_ed25519
#   Port 22
    Ciphers aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,3des-cbc
#   MACs hmac-md5,hmac-sha1,umac-64@openssh.com
#   EscapeChar ~
#   Tunnel no
#   TunnelDevice any:any
#   PermitLocalCommand no
#   VisualHostKey no
#   ProxyCommand ssh -q -W %h:%p gateway.example.com
#   RekeyLimit 1G 1h
#   UserKnownHostsFile ~/.ssh/known_hosts.d/%k
    SendEnv LANG LC_*
    HashKnownHosts yes
    GSSAPIAuthentication yes
    HostkeyAlgorithms ssh-dss,ssh-rsa
    KexAlgorithms +diffie-hellman-group1-sha1

출처 : ssh 원격 명령 실행 (tistory.com)

728x90
반응형