如何透過 SSH 在其他伺服器上執行 sudo NOPASSWD 命令

如何透過 SSH 在其他伺服器上執行 sudo NOPASSWD 命令

我已閱讀與該問題相關的所有帖子。但如果你也能看到我的並提出建議。

我正在嘗試執行無密碼 SSH 並在遠端伺服器上運行腳本。但 Sudo 存取要求輸入密碼。請建議。它在本地路徑上運作良好。但任何需要 root 存取權的命令或腳本都會失敗。

下面是腳本:

#!/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) 中的「超時」值設定的。

sudo su - root /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 時隱含/預設“root”)

相關內容