[英]How to run multiple sudo command over ssh using bash script securely and only entering password once
我正在嘗試編寫一個本地 Bash 腳本以自動(設置為由 cron 運行)通過 SSH 執行多個遠程任務,包括一些需要 sudo 的任務。 我希望從文件中讀取密碼,然后通過 ssh 登錄,然后通過任何遠程 sudo 命令登錄。 我還想確保密碼不是通過網絡以明文形式或在遠程計算機的歷史記錄中發送的。
(類似下面的東西不起作用)
#! /bin/bash
sshpass -f mypasswordfile ssh -tt remoteid@remotesever << EOF
$hostname # remote server name
sudo apt update
sudo apt upgrade -y
whoami
# etc.. etc.. assortment of health, security and other maintenance tasks
EOF
您需要為此使用引號,一個 -t 就足夠了:
#! /bin/bash
ssh -t remoteid@remotesever "\
sudo -S apt update; \
sudo -S apt upgrade -y; \
sudo -S whoami" <<< $(cat mypasswordfile)
我使用heredoc想出了這個,但@wuseman解決方案看起來更干凈
#!/bin/bash
password=`cat sudopasswordfile`
ssh -t user@host <<EOF
echo "$password" | sudo -S whoami
echo "$password" | sudo df -hT
EOF
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.