Bash
將密碼傳遞給 sudo su
在 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