Ssh

sudoing ssh 的問題 - sudo ssh ... 失敗

  • June 6, 2016

我正在嘗試使用 git salt ssh 訪問(以 root 執行)。錯誤總是:

權限被拒絕(公鑰)。

我設法重現了這個問題,模擬了 salt 可能在做什麼,通過在root使用者上執行 ssh 命令,然後使用sudo(仍然在 root 帳戶上)執行相同的命令,得到相同的錯誤。

這成功了:

root@server:/src# ssh -T git@bitbucket.org

以 XXXX 身份登錄。

這失敗了:

root@server:/src# sudo ssh -T git@bitbucket.org

權限被拒絕(公鑰)。

權限顯然是正確的:

ls -la ~/.ssh
total 32
drwx------  2 root root 4096 Jun  2 12:18 .
drwx------ 12 root root 4096 Jun  2 12:10 ..
-rw-------  1 root root  550 Jun  1 16:31 authorized_keys
-r--------  1 root root   83 Jun  2 12:18 config
-rw-------  1 root root  134 Jun  1 18:18 environment
-rw-------  1 root root 1679 May 26  2015 id_rsa
-rw-r--r--  1 root root  393 Aug  3  2014 id_rsa.pub
-rw-r--r--  1 root root 3984 Jun  2 10:19 known_hosts

添加-v到失敗的命令中顯示一切都很好,直到失敗為止:

...
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /root/.ssh/id_rsa
debug1: Server accepts key: pkalg ssh-rsa blen 279
debug1: key_parse_private2: missing begin marker
debug1: read PEM private key done: type RSA
debug1: Authentications that can continue: publickey
debug1: No more authentication methods to try.
Permission denied (publickey).

我已經搜尋並發現僅與權限相關的內容,但沒有解釋使用 root 執行時 sudo 失敗的原因。

不知何故,它與id_rsa.pub文件有關。對於 root 使用者,它沒有問題,但對於通過 root 的 sudo,它顯然不起作用。

可能是 root 的特殊情況會阻止此操作,或者它可能需要其他特殊權限,而不是推薦的權限或組配置。

“解決方案”是只刪除公鑰文件。

就像@Serge 在評論中指出的那樣,這一行

debug1: Offering RSA public key: /root/.ssh/id_rsa

在您的 ssh -v 輸出中告訴您 ssh 嘗試使用 root 主目錄 (/root) 中的公鑰進行身份驗證,而不是您自己的使用者目錄 (/home/yourusername)。

這為您提供了三個選擇。你可以

  • 使用選項執行 ssh-i以顯式指定 ssh 將使用的密鑰(例如ssh -i /home/yourusername/.ssh/id_rsa ...),
  • 為 root 創建一個新的 ssh 密鑰並將其添加到遙控器上的授權密鑰或
  • 將您自己的 .ssh 目錄複製或連結到 /root

不過,您可能需要重新考慮您的設置。SSH 不需要您機器上的 root 權限,並且以 root 身份執行它也不會在遠端端為您提供任何東西。

引用自:https://unix.stackexchange.com/questions/287091