【问题标题】:Permission denied (publickey) but public key exists locally and remotely权限被拒绝(公钥),但公钥在本地和远程存在
【发布时间】:2023-03-20 15:00:01
【问题描述】:

我尝试推送时出现以下错误:

Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists

我知道这意味着什么。但是,id_rsa.pub 确实存在于本地,并且它也被复制到 bitbucker,它们都是相同的。存储库也存在。

可能是什么原因?

【问题讨论】:

  • 你用的是什么操作系统?
  • 你的 ~/.ssh/config 中有 bitbucket 条目吗?
  • @m79lkm,我没有这条路。但是,我能够在我以前的系统上成功推送到这个存储库。在这个系统上,我有相同的 ~/.ssh 目录和相同的内容,因为我从以前的系统(Mint)复制了它。
  • 如果您在移动文件时使用了cp,那么您在新系统上的文件权限尤其可能出现乱码。 rsync 最适合移动文件和保留权限。
  • @GuyHughes,应该有什么权限?在我的新系统上,所有这些都具有 root root 权限。

标签: linux ubuntu github ssh public-key


【解决方案1】:

公共关键问题

  1. 检查您是否放入了正确的远程存储库路径(即git@github.com:username/reponame)。

  2. 使用ssh git@somehostname.com -T -vv 调试连接以获得详细模式。 检查输出。它会告诉你发生了什么。如果您仍然卡住,请在此处发布,我们可以看看。

  3. ssh 经常会抱怨如果您的私钥其指向私钥的父目录有higher permissions set than they ought to

    1. 密钥本身应设置为chmod 0600 ~/.ssh/id_rsa~/.ssh目录最多设置为0700。
    2. ~~/..(父目录,在 Linux 上通常为 /home,在 Mac OS X 上通常为 /Users)最多应设置为 744。
    3. 还要检查密钥及其父目录上的组和用户权限是否设置正确:

      $ id -un && id -ug   # check output of this command before using!
      username
      groupname
      $ chown --recursive $(id -un):$(id -gn) ~   
      

      这将重置您主目录的所有权限,以便您当前的用户和组拥有所有文件。这可能不是你想要的。见man chown

  4. 如果您仍然遇到问题,您可能还需要检查远程主机上的~/.ssh/authorized_keys 文件。它的权限也是一个失败点。


修复 OSX 目录权限

@AlexanderSupertramp,我说的权限应该是744'最多,'是的,仅指SSH的要求。但我不建议您将/home 目录更改为该号码。每个操作系统对目录权限都有自己的要求,由于您没有提供有关系统的太多信息,因此我只能提供一般性说明。无论如何,我很抱歉我的回答不清楚。

您的 mac 可能无法启动,因为 744 过于宽松。但我不能确定。要解决此问题,您可能需要访问 Apple Store 的 Genius Bar 或联系授权维修技术人员。您还可以使用以下内置工具自动修复目录权限:

  1. 在按下电源按钮的同时按下Command+S 来启动您的 Mac,进入单用户模式,如this article 中所述。
  2. 从菜单栏中启动 OSX 磁盘工具,然后使用Apple KB 中所述的修复权限工具

【讨论】:

  • ssh git@somehostname.com -T -vv 中的 somehostname 是什么?
  • 它可以是任何东西,具体取决于您要连接的位置。如果您使用的是 github.com,它将是 ssh git@github.com,而 @ 符号之前的第一部分是 ssh '用户名' (git),但这与您在 github.com 上的用户名不同。如果您使用的是 bitbucket.org,则为 git@bitbucket.org
  • 你的第二条建议是The ~ and ~/.. (parent directory, often /home on Linux and /Users on Mac OS X) should be set to 744 at most.。所以我做了sudo chmod 744 ~/..,我不能再启动我的mac了。
  • @AlexanderSupertramp,我已经更新了我的答案。我从来没有建议你应该将你的/home 目录权限设置为 744。对于造成的混淆,我深表歉意。
  • 嗨。我遇到了完全相同的问题,但在 Windows 操作系统上。它在我添加 SSH 密钥后工作了几天,之后我得到了同样的错误。有什么建议吗?
猜你喜欢
  • 1970-01-01
  • 2018-03-11
  • 2019-11-24
  • 2014-11-08
  • 2012-01-18
  • 2012-04-25
  • 2014-03-18
  • 2023-03-22
相关资源
最近更新 更多