為 root 設置基於密鑰的身份驗證
我使用標準使用者帳戶連接到一台 linux 機器,並在需要在我的使用者站上方執行一些操作時使用 sudo。
其中一件事是使用 git (sudo git pull) 執行拉動。
我想在我所在的機器和 git 儲存庫之間設置基於密鑰的身份驗證,這樣就不需要每次都輸入密碼。
我已經能夠在機器上的標準帳戶和 git 儲存庫之間設置身份驗證,但是當我嘗試將其設置為 root 時它將無法工作(我執行與普通帳戶相同的任務,但每個都使用 sudo時間)
我假設 sudo 以 root 身份執行(sudo whoami 返回’root’)生成密鑰並將它們作為 sudo 傳輸到另一台機器應該與我以 root 身份登錄一樣工作。我的假設是錯誤的,還是在另一台機器上使用基於密鑰的身份驗證作為 root 使用者存在問題?
檢查是否在您的sshd_config
PermitRootLogin
中設置為,並且“root”不在(或在)列表中。without-password``DenyUsers``AllowUsers
還要檢查 和 的
/root/.ssh
權限/root/.ssh/authorized_keys
。兩者都應該只能由“root”訪問(例如,具有0700
和的權限遮罩0600
)。
在大多數 linux 發行版上,預設情況下禁用以 root 身份登錄的 SSH(請參閱 James Lawrie 或 joschi 的答案以了解如何啟用它)。但是沒有充分的理由使用它 IMO。(另外,我不確定我是否理解為什麼在執行 git pull 時要成為 root 使用者,但讓我們假設你真的需要它……)
無論如何,如果您想在不需要密碼的情況下以 root 身份執行某個任務,您應該配置 sudo 以完全允許該操作。您需要在
sudoers
文件中添加類似於以下內容的行:<username you want to use> ALL=(ALL) NOPASSWD: <command you want to run>
不要忘記首先仔細閱讀 sudo 和 sudoers 的手冊頁,並始終使用它
visudo
來編輯您的sudoers
配置!