Ubuntu

引導 Ubuntu 伺服器的建議

  • March 15, 2013

當我創建新的 Ubuntu 12.10 實例時,我通常通過手動 SSH 連接到機器並編輯 sudoers 以在預設使用者(例如,ec2-user、azureuser 等)上放置 NOPASSWD 來引導它們。然後我的安裝腳本可以 sudo 各種命令而無需提供密碼。

我對密碼沒有任何反對意見。只是當我嘗試使用 bash 腳本通過 SSH 執行基於密碼的 sudo 時,sudo 抱怨沒有 tty(“sudo:不存在 tty 並且沒有指定 askpass 程序”)。

另外,我需要它完全自動化——它不應該要求有人手動輸入密碼。

幾個問題:

1)這裡的方法是否在正確的軌道上?特別是,在這裡使用 NOPASSWD 是個壞主意嗎?我假設在這裡保護預設使用者的 SSH 私鑰很好 - 只需將此帳戶本質上視為 root 帳戶。

2)如果這是錯誤的,那麼我如何克服“不存在”的反對意見而不必手動輸入密碼?

3)如果 NOPASSWD 是好的,那麼我應該如何自動化 sudoers 編輯?如果只是 sudo visudo 命令,我似乎需要使用密碼。

我想我可以手動完成所有工作,然後創建一個新圖像,但我寧願只保留基本圖像,然後在可能的情況下編寫這些東西。

只是一個想法,但為什麼不只允許使用基於密鑰的身份驗證通過 SSH 進行 root 訪問,如PermitRootLogin without-password.

如果您需要強大的安全設置,您當然可以在基本安裝完成後修復此問題。但在我看來,在機器設置的初始引導期間擁有對 root 帳戶設置的基於密鑰的訪問權限的風險非常小。

3)如果 NOPASSWD 是好的,那麼我應該如何自動化 sudoers 編輯?如果只是 sudo visudo 命令,我似乎需要使用密碼。

Ubuntu 支持該includedir /etc/sudoers.d選項。因此,您的初始設置非常簡單。就是這樣。

echo "adminuser ALL=NOPASSWD: ALL" > /etc/sudoers.d/boostrap
chmod 0400 /etc/sudoers.d/boostrap

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