Ssh
複製 git repo 時權限被拒絕(公鑰),但 SSH 工作正常
我正在嘗試使用 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
目錄的權限,而預設情況下不應該擁有該目錄。因此,您可能應該授予您的使用者對該目錄的權限,或者使該使用者成為有權訪問該目錄的組的一部分。
附言。在您的第二個範例中,您正在連接到使用者的家。