Ssh

複製 git repo 時權限被拒絕(公鑰),但 SSH 工作正常

  • September 24, 2018

我正在嘗試使用 SSH 協議複製一個 git repo,如下所示:

sudo git clone ryan@example.com:/var/www/repo

但我收到“權限被拒絕(公鑰)”錯誤。但是,我已經將我的公鑰放在了 authorized_keys 文件中,當我使用相同的使用者通過 SSH 連接到同一台伺服器時,它可以正常工作,如下所示:

ssh ryan@example.com

如果我將相同的儲存庫複製到另一台機器上,它也可以正常工作。我設置兩台機器的方式之間的唯一區別是:在不工作的機器上,我手動將公鑰複製並粘貼到 authorized_keys 中。在可以工作的機器上,我使用 ssh-copy-id 進行設置。即使我使用的是 SSH 協議,git 是否使用了與 SSH 不同的身份驗證方法?為什麼我可以使用 SSH 連接,但不能通過 SSH 使用 git?

更新:

如下所示,問題是由於sudo複製時使用。然後這將使用 root 使用者進行身份驗證,並且由於我禁用了 root 的 SSH 訪問,因此它被阻止了。我通過將自己添加到www-data擁有本地目錄的組中解決了這個問題,然後為該組授予寫權限。

使用sudo它們執行命令時,它們以目標使用者身份執行(在這種情況下為 root,因為這是預設使用者,並且您沒有選擇帶有-u username選項的特定使用者)。

這意味著使用屬於 root 的而不是您的 ssh 密鑰。為 root 使用者配置 git 以使用您帳戶中的密鑰對,或者(生成並)使用 root ssh 密鑰對來獲得對您的 git 儲存庫的授權

據我所知,您的使用者ryan應該擁有該/var/www/repo目錄的權限,而預設情況下不應該擁有該目錄。

因此,您可能應該授予您的使用者對該目錄的權限,或者使該使用者成為有權訪問該目錄的組的一部分。

附言。在您的第二個範例中,您正在連接到使用者的家。

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