克隆 git repo 时权限被拒绝(公钥),但 SSH 工作正常

克隆 git repo 时权限被拒绝(公钥),但 SSH 工作正常

我正在尝试使用 SSH 协议克隆 git repo,如下所示:

sudo git clone [email protected]:/var/www/repo

但是我收到了“权限被拒绝(公钥)”错误。但是,我已经将我的公钥放在authorized_keys文件中,当我使用同一个用户通过SSH连接到同一个服务器时,它工作正常,如下所示:

ssh [email protected]

如果我将同一个存储库克隆到另一台机器上,它也能正常工作。我设置这两台机器的方式唯一的区别是:在无法正常工作的机器上,我手动将公钥复制并粘贴到 authorized_keys 中。在可以正常工作的机器上,我使用 ssh-copy-id 进行设置。即使我使用的是 SSH 协议,git 是否使用了与 SSH 不同的身份验证方法?为什么我可以使用 SSH 连接,但不能通过 SSH 使用 git?

更新:

如下所述,问题是由于sudo在克隆时使用。然后,这将使用 root 用户进行身份验证,由于我已禁用 root 的 SSH 访问,因此它被阻止了。我通过将自己添加到www-data拥有本地目录的组,然后授予该组的写权限来解决这个问题。

答案1

当运行命令时,sudo它们以目标用户身份运行(在本例中为 root,因为这是默认用户,并且您没有使用选项选择特定用户-u username)。

这意味着将使用属于 root 的密钥,而不是您的 ssh 密钥。要么为 root 用户配置 git,以使用您帐户中的密钥对,要么(生成并)使用 root ssh 密钥对来获取对您的 git 存储库的授权

答案2

据我所知,您的用户瑞安应该对/var/www/repo目录具有权限,但默认情况下不应该具有该权限。

因此,您可能应该授予用户对该目录的权限,或使用户成为有权访问该目录的组的一部分。

附言:在第二个示例中,您正在连接到用户的家。

相关内容