簡體   English   中英

如何使用 bash 腳本安全地在 ssh 上運行多個 sudo 命令並且只輸入一次密碼

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM