SSH를 통해 다른 서버에서 sudo NOPASSWD 명령을 실행하는 방법

SSH를 통해 다른 서버에서 sudo NOPASSWD 명령을 실행하는 방법

해당 문제와 관련된 글을 모두 읽었습니다. 하지만 당신도 내 것을 보고 제안을 할 수 있다면.

비밀번호 없는 SSH를 수행하고 원격 서버에서 스크립트를 실행하려고 합니다. 그러나 Sudo 액세스는 비밀번호를 요구합니다. 제안해주세요. 로컬 경로에서는 정상적으로 실행되었습니다. 그러나 루트 액세스가 필요한 명령이나 스크립트는 실패합니다.

아래는 스크립트입니다:

#!/bin/sh
#set -x
# This Script will search for mib files on Current Server and other Server
# to load mib on current Server.

if [ -f /home/shuksand/Script/MibSearch.conf ]
then
        . /home/shuksand/Script/MibSearch.conf
else
        echo "Failed to find config file. Hence Existing!!!!"
fi

# Check alll MIBS on Server


while read line
do
        ServerName=$line
        echo $line
        scp  /home/shuksand/Input/Mib.txt $ServerName:
        cat /home/shuksand/Input/Mib.txt | while read DATA
        do
                echo $DATA
                ssh -t -t shuksand@${ServerName} 'sudo su - root /bin/sh /home/shuksand/Mib.sh $DATA'
        done
done < /home/shuksand/Input/ServerList.txt

미리 감사드립니다!!

답변1

이 문제는 일반적으로 sudoers 파일로 인해 발생합니다. 시도해 볼 수 있는 한 가지 방법은 sh를 실행하는 스크립트를 만든 다음 해당 sh 프롬프트에서 sudo 명령을 실행하고 비밀번호가 필요한지 확인하는 것입니다.

sudo는 최근에 동일한 로그인으로 비밀번호를 인증했는지 기억하는 경향이 있습니다. 따라서 sudo가 사용자가 한 번 충분히 인증되었다고 간주하고(아마도 비밀번호를 입력한 경우) /etc/sudoers를 변경한 다음 다시 sudo를 시도하면 sudo에서 메시지를 표시하지 않을 수 있으므로 쉽게 오해할 수 있습니다. sudo는 당신이 5분 전에 테스트를 통과했다는 것을 기억할 수도 있기 때문입니다. 이는 /etc/sudoers(man sudoers)의 "timeout" 값으로 설정됩니다.

sudo su - 루트 /bin/sh /home/shuksand/Mib.sh $DATA

아마도 불필요하게 복잡해 보입니다. 나는 때때로 sudo가 작동하고 su가 실패하거나 그 반대의 경우를 보았습니다. 해당 명령을 사용하려면 둘 다 작동해야 합니다. 많은 시스템에서,

sudo -i ~shuksand/Mib.sh $DATA

아마 같은 일을 할 것입니다.

답변2

내 생각에 당신이 해야 할 일은 /etc/sudoers 파일을 편집하는 것입니다. 다음과 같이 추가하십시오.

<your username> ALL=(ALL) NOPASSWD: ALL

자세한 내용은 여기에서 확인할 수 있습니다. https://askubuntu.com/questions/147241/execute-sudo-without-password

질문의 형식을 수정해 보시기 바랍니다. 귀하가 작성하는 대부분의 내용(스크립트)은 귀하의 질문과 실제로 관련이 없습니다.

편집: Mib.sh 파일을 실행 가능하도록 올바르게 설정하고 파일 시작 부분에 !#/bin/sh 줄을 포함했다면 'sudo su - /home/shuksand/Mib.sh'만 실행하면 됩니다. $DATA'(su를 수행할 때 "루트"가 암시/기본값임)

관련 정보