높은 권한으로 쉘 스크립트를 원격으로 실행하는 방법

높은 권한으로 쉘 스크립트를 원격으로 실행하는 방법

서버가 2개 있는데,서버 A그리고서버 B.

현재 저는 쉘 스크립트를 실행하고 있습니다.서버 A파일을 생성하고'홍보하다'도착한다서버 B. 쉘 스크립트는 cron으로 매시간 실행되며 SUDO권한이 필요합니다.

하지만 설정 변경으로 인해 더 이상'푸시'이 파일의 출처는서버 A도착하다서버 B, 그리고 지금 나는 필요합니다'당기다'이 파일의 출처는서버 B도착하다서버 A.

당신은 가지고 있습니까?'옳은'원격 서버에 연결하고 높은 권한이 필요한 스크립트를 실행하는 방법은 무엇입니까? 하지만 쉘 스크립트에 비밀번호를 작성할 필요는 없습니다.서버 B?

답변1

당신은 몇 가지 선택권이 있습니다. 몇 가지 제안이 있습니다 :

  1. 인증서 기반 인증을 사용하여 serverB에서 root@serverA에 연결하고 해당 서버의 루트 컨텍스트에서 스크립트를 실행합니다.

    scp그런 다음 동일한 인증서 기반 인증을 사용하여 생성된 파일을 전달하거나 되돌릴 수 있습니다 rsync. 단점은 serverB의 계정이 root@serverA에 대한 무제한 액세스 권한을 갖고 있다는 것입니다. 그러나 엄격하게 관리되는 환경에서는 이것이 허용될 수 있습니다.

  2. 단일 명령(스크립트) 실행으로 연결을 제한하는 인증서 기반 인증을 사용하여 serverB에서 root@serverA로 연결합니다.

    명령이 해당 파일을 다음으로 출력하는 경우표준 출력ssh스크립트가 완료된 후 파일을 전송할 필요 없이 serverB에서 root@serverA로 세션에서 직접 캡처할 수 있습니다 . serverB의 계정에는 root@serverA에 대한 임의 액세스 권한이 없습니다.

    ~root/.ssh/authorized_keys해당 파일에서 명령을 실행하기 위해 root@serverA에 필요한 항목의 예는 bake다음과 같습니다.

    ssh-rsa AAAAB3Nza...Fr9FvN me@roaima,command="/usr/local/bin/bake",no-agent-forwarding,no-port-forwarding,no-X11-forwarding
    
  3. serverB에서 serverA에 연결하고 sudo스크립트를 실행하는 데 사용합니다. sudo단일 사용자 계정이 비밀번호 없이 루트로 스크립트를 실행할 수 있도록 구성할 수 있습니다 .

    이 항목을 사용하면 /etc/sudoers"roaima" 사용자가 다음을 사용하여 인수를 사용하거나 사용하지 않고 명명된 스크립트를 루트로 실행할 수 있습니다.sudo /usr/local/bin/bake --fruit=apple,blackberry --type=pie

    roaima ALL = NOPASSWD: /usr/local/bin/bake
    
  4. serverA에 정의된 TCP 포트에 연결하고 스크립트를 트리거하여 루트로 실행하는 등 보다 복잡한 작업에는 트리거를 사용합니다.

    즉, serverA의 TCP 포트에 액세스할 수 있는 사람은 누구나 스크립트를 시작할 수 있으므로 DDOS 문제를 고려하고 스크립트의 여러 인스턴스가 동시에 실행되지 않도록 해야 합니다. 그러나 이렇게 하면 필요가 없어집니다.어느serverA의 대화형 루트 액세스 - sudo.

답변2

당신은에 연결할 수 있습니다서버 Bvia를 통해 ssh실행한 다음 sudo상승된 권한으로 스크립트를 실행합니다. sudo비밀번호를 요구하지 않도록 구성할 수 있습니다 .

관련 정보