引導 Ubuntu 伺服器的建議
當我創建新的 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