在雲伺服器上設置無密碼sudo
可以嗎?
我喜歡通過密鑰訪問伺服器的想法,這樣我就不必每次
ssh
進入一個盒子時都輸入我的密碼,我什至鎖定了我的使用者(不是root
)密碼(passwd -l username
),所以沒有密鑰就不可能登錄。但是,如果我需要輸入
sudo
命令密碼,所有這些都會中斷。所以我很想設置無密碼sudo
以使事情符合無密碼登錄。然而,我一直有一種直覺,它可能會以某種意想不到的方式適得其反,這似乎有點不安全。這種設置有什麼注意事項嗎?您會推薦/不推薦為伺服器上的使用者帳戶執行此操作嗎?
澄清
- 我在這裡談論的是
sudo
在互動式使用者會話中的使用,而不是用於服務或管理腳本- 我說的是使用雲伺服器(所以我沒有對機器的物理本地訪問,只能遠端登錄)
- 我知道這
sudo
有一個超時,在此期間我不必重新輸入我的密碼。但我的演唱會並不是真的要浪費額外的時間來輸入密碼。我的想法是根本不必處理密碼,因為我假設:
- 如果我必須完全記住它,它很可能太短而無法安全或重複使用
- 如果我為我的遠端帳戶生成一個長且唯一的密碼,我將不得不將它儲存在某個地方(本地密碼管理器程序或云服務)並在每次我想使用時獲取它
sudo
。我希望我可以避免這種情況。因此,對於這個問題,我想更好地了解一種可能的配置相對於其他配置的風險、注意事項和權衡。
跟進 1
所有答案都說無密碼
sudo
是不安全的,因為如果我的個人使用者帳戶受到威脅,它允許“輕鬆”提升權限。我明白那個。但另一方面,如果我使用密碼,我們會遇到密碼的所有經典風險(太短或通用的字元串,在不同的服務中重複等)。但是我想如果我禁用密碼身份驗證/etc/ssh/sshd_config
以便您仍然必須擁有登錄密鑰,我可以使用更簡單的密碼只是為了sudo
更容易輸入?這是一個有效的策略嗎?跟進 2
如果我還有一個
root
通過 ssh 登錄的密鑰,如果有人可以訪問我的電腦並竊取我的密鑰(儘管他們仍然受到作業系統的密鑰環密碼的保護!),他們還不如直接訪問該root
帳戶,繞過sudo
路徑。root
那麼訪問該帳戶的策略應該是什麼?
我喜歡通過密鑰訪問伺服器的想法,這樣我就不必每次 ssh 進入一個盒子時都輸入我的密碼,我什至鎖定了我的使用者(不是 root)密碼(passwd -l 使用者名),所以不可能無需密鑰登錄…您是否建議/不建議為伺服器上的使用者帳戶執行此操作?
您正在以錯誤的方式禁用基於密碼的登錄。不要鎖定使用者的帳戶,而是
PasswordAuthentication no
在您的/etc/ssh/sshd_config
.使用該設置,ssh 的密碼身份驗證被禁用,但您仍然可以為 sudo 使用密碼。
我建議在 sudo 中設置的唯一
NOPASSWD
一次是服務帳戶,其中程序需要能夠以程式方式通過 sudo 執行命令。在這些情況下,請確保您僅將帳戶需要執行的*特定命令明確列入白名單。*對於互動式帳戶,您應該始終啟用密碼。回复您的後續問題:
但是我想如果我在 /etc/ssh/sshd_config 中禁用密碼身份驗證,以便您仍然必須擁有登錄密鑰,我可以為更容易輸入的 sudo 使用更簡單的密碼?這是一個有效的策略嗎?
對,那是正確的。我仍然建議使用相對強的本地帳戶密碼,但不要太強。~8 個字元,隨機生成就足夠了。
如果我還有一個通過 ssh 以 root 身份登錄的密鑰,如果有人可以訪問我的電腦並竊取我的密鑰(儘管他們仍然受到作業系統的密鑰環密碼的保護!),他們還不如直接訪問root 帳戶,繞過 sudo 路徑。
應該禁用通過 ssh 的根訪問。時期。設置
PermitRootLogin no
在您的sshd_config
.那麼訪問 root 帳戶的策略應該是什麼?
您應該始終能夠獲得對伺服器控制台的帶外訪問權限。一些 VPS 供應商確實提供此功能,專用硬體供應商也是如此。如果您的提供商未授予真正的控制台訪問權限(例如 EC2),您通常仍可以使用我在此答案中概述的流程恢復訪問權限。