Ssh

為 root 設置基於密鑰的身份驗證

  • September 2, 2010

我使用標準使用者帳戶連接到一台 linux 機器,並在需要在我的使用者站上方執行一些操作時使用 sudo。

其中一件事是使用 git (sudo git pull) 執行拉動。

我想在我所在的機器和 git 儲存庫之間設置基於密鑰的身份驗證,這樣就不需要每次都輸入密碼。

我已經能夠在機器上的標準帳戶和 git 儲存庫之間設置身份驗證,但是當我嘗試將其設置為 root 時它將無法工作(我執行與普通帳戶相同的任務,但每個都使用 sudo時間)

我假設 sudo 以 root 身份執行(sudo whoami 返回’root’)生成密鑰並將它們作為 sudo 傳輸到另一台機器應該與我以 root 身份登錄一樣工作。我的假設是錯誤的,還是在另一台機器上使用基於密鑰的身份驗證作為 root 使用者存在問題?

檢查是否在您的sshd_configPermitRootLogin中設置為,並且“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配置!

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