如何從 ssh root 確認 linux root 密碼?

如何從 ssh root 確認 linux root 密碼?

如何檢查遠端機器的 root 密碼?

我有一台通常透過 ssh root 和其他使用者存取的遠端電腦。出於安全目的,我有一個腳本可以從中央伺服器定期更改所有金鑰和使用者密碼。

對於非 root 用戶,密碼會像這樣更新。

ssh -i a_priv_key root@ip "echo 'user:NEWPASS' | chpasswd"

我檢查它實際上已經改變了。

ssh -i b_priv_key user@ip "echo NEWPASS | sudo -S ls /root"

但是,如果我想對 root 使用者執行相同的操作,我就會陷入困境。 sudo -S ls /root 總是會傳回包含任何密碼的列表,因為我們只是以 root 身分 ssh 到遠端電腦。

如果我們以使用者身分 ssh 登入,則會提示輸入使用者密碼。

我一直在嘗試使用 su user && su root 獲取某些內容,因為我注意到它會提示輸入 root 密碼,但無法像上面那樣編寫腳本。

來自 root shell 的「login root」也將始終提示輸入密碼,但我也無法編寫明文密碼的腳本。

我已閱讀此問題,但希望有一種內建方法來完成此操作,而不是編寫必須安裝在遠端電腦上的自訂應用程式。 Linux下如何查看密碼?

答案1

如果sudo可以選擇在目標電腦上進行配置,那麼您可以設定rootpw某些特定命令,這會sudo要求輸入 root 密碼而不是使用者密碼。例如,您可以在文件中新增以下行 /etc/sudoers.d/lsrootpw(並sudo根據需要重新啟動服務)

Defaults!/bin/ls        rootpw

這樣,除 root 之外的任何使用者在執行操作時sudo ls都會被詢問 root 密碼而不是自己的密碼。因此,您可以測試

ssh -i b_priv_key root@ip su user sudo -S ls /root <<< "NEWPASS"

這會以一種方式或另一種方式進行,具體取決於密碼是否NEWPASS正確root。該測試需要目標上有 sudo 用戶。

或者,如果你有 Debian 的runuser指令,你可以像nobody下面這樣使用:

ssh -i b_priv_key root@ip runuser -u nobody -- sudo -S ls /root <<< "NEWPASS"

根據密碼的正確性,這也應該始終產生兩個不同的結果。特別是,正確的密碼會導致抱怨密碼nobody不存在於sudoers文件中。儘管您可以透過在/etc/sudoers.d/lsrootpw.

當然,總而言之,這與自訂應用程式沒有太大區別,因為它需要在目標主機上安裝某些內容。同時,這一切都可以透過五個遠端命令序列來完成(新增lsrootpw、重新啟動sudo、進行測試、刪除lsrootpw並再次重新啟動 sudo)

相關內容