Sshsudoing ssh 的問題 -
sudoing ssh 的問題 - sudo ssh ...
失敗
我正在嘗試使用 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 身份執行它也不會在遠端端為您提供任何東西。