루트 권한으로 원격 서버에서 쉘을 실행하는 방법

루트 권한으로 원격 서버에서 쉘을 실행하는 방법

원격 서버에서 쉘 스크립트를 실행하고 싶습니다. 스크립트는 비밀번호를 요구하지 않고(또는 sudo스크립트에서 사용하지 않고) 루트로 실행되어야 합니다. 누구든지 나에게 조언을 해줄 수 있습니까?

답변1

사용된 솔루션 외에도 sudo스크립트 친화적인 구성이 가능합니다(특정 명령에 대한 추가 비밀번호 프롬프트 없음) 또는설정값보안이 쉽지 않은 솔루션의 경우 command= 제한을 사용하여 SSH 공개 키 인증을 사용하는 것이 좋습니다.

이렇게 하려면 아직 수행되지 않은 경우 루트 사용자에 대해 비밀번호 없는 로그인을 활성화하고( PermitRootLogin without-passwordin) /etc/ssh/sshd_config설명과 같이 command= 매개변수를 사용하여 SSH 공개 키(또는 이 경우를 위해 생성된 특수 키)를 추가 해야 합니다./root/.ssh/authorized_keys이 답변.

답변2

스크립트에 루트 비밀번호를 입력할 필요가 없습니다.

플랜 A

서버의 스크립트를 suid하고 루트 또는 사용자 그룹만 읽기/실행 가능하게 만듭니다.

chmod 4750 script.sh
chgrp your_group script.sh

이 그룹에 사용자를 추가하는 것을 잊지 마세요.

ssh user@XXXX '/path/to/script.sh'그런 다음 스크립트를 실행할 수 있습니다 .

플랜 B

SSH 키를 생성하고 공개 키를 원격 서버에 복사합니다. 이 방법을 사용하려면 루트로 로그인해야 하지만 비밀번호는 필요하지 않습니다. (openssl을 사용하여 개인 키를 해독하는 것을 잊지 마세요)

개인키를 분실하면 매우 위험합니다.

답변3

루트 사용자 없이 솔루션 저장

클라이언트에서 SSH 키 생성

고객: ssh-keygen

서버에 복사하세요

섬기는 사람:mkdir ~/.ssh

고객:scp ~/.ssh/id_rsa.pub serveruser@server:~/.ssh/authorized_keys

사용자가 비밀번호 없이 sudo를 사용할 수 있도록 허용

섬기는 사람:

visudo
    serveruser ALL=(ALL) NOPASSWD: /usr/bin/foo /usr/sbin/bar

이제 다음과 같은 명령을 실행할 수 있습니다.

고객:ssh serveruser@server 'sudo foo && bar'

// ssh -t ...Sudo를 사용해야 하는 일부 서버

관련 정보