Bash

將密碼傳遞給 sudo su

  • August 1, 2012

在 ssh 進入遠端伺服器後,我想對不同的使用者進行 sudo,為此我嘗試了以下操作:

cat remote-test.sh
ssh -t -t abcuser@test-server.net 'bash -s' << EOF
 /tmp/test.sh
EOF

當我從 development-server.net 執行 remote-test.sh 時,我想 ssh 到 test-server.net 作為 abcuser 然後 sudo 作為 xyzuser 。

cat /tmp/test.sh

echo "password" | sudo -S su - xyzuser
cd /tmp/some/directory

有人可以建議如何在腳本中執行 sudo su 時傳遞密碼。

您以使用者身份將無密碼 ssh 設置為localhost以實現您正在嘗試的內容。您需要將的公鑰添加為.xyzuser``abcuser``abcuser``xyzuser

然後,當您以 身份登錄時abcuser,您可以執行以下操作:

ssh xyzuser@localhost do_something_as_xyzuser

如果您已阻止 ssh 訪問xyzuser,請僅通過環回允許它。如果您使用的是 linux,請參閱您的/etc/security/access.conf或等效的如何執行此操作。

放棄使用su並使用正確的權限配置 sudo。這涉及編輯/etc/sudoers和添加條目以允許使用者在不提供密碼的情況下執行命令。

你可以讓它有點高級

User_Alias SCRIPT_USER johndoe
Cmnd_Alias SCRIPT_PATH /usr/local/bin/myscript.sh

SCRIPT_USER ALL = NOPASSWD: SCRIPT_PATH

或者用一條線獲得相同的東西。

johndoe ALL = NOPASSWD: /usr/local/bin/myscript.sh

引用自:https://serverfault.com/questions/409581