Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 权限被拒绝(公钥),但公钥在本地和远程存在_Linux_Ubuntu_Github_Ssh_Public Key - Fatal编程技术网

Linux 权限被拒绝(公钥),但公钥在本地和远程存在

Linux 权限被拒绝(公钥),但公钥在本地和远程存在,linux,ubuntu,github,ssh,public-key,Linux,Ubuntu,Github,Ssh,Public Key,我尝试推送时出现以下错误: Permission denied (publickey). fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists 我知道这是什么意思。但是,id\u rsa.pub确实存在于本地,并且它也被复制到bitbucker,它们都是相同的。存储库也存在 原因可能是什么?公钥问题

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

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

Please make sure you have the correct access rights
and the repository exists
我知道这是什么意思。但是,
id\u rsa.pub
确实存在于本地,并且它也被复制到bitbucker,它们都是相同的。存储库也存在

原因可能是什么?

公钥问题
  • 检查您是否输入了正确的远程存储库路径(即
    git@github.com:username/reponame

  • 使用
    ssh调试连接git@somehostname.com-T-vv
    获取详细模式。 检查输出。它会告诉你发生了什么。如果你仍然被卡住了,把它贴在这里,我们可以看看

  • ssh
    通常会抱怨您的私钥或其指向私钥的父目录已被删除

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

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

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


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

    您的mac可能无法启动,因为
    744
    太自由了。但我不能肯定。要解决此问题,您可能需要访问苹果商店的Genius酒吧或联系授权维修技术人员。您还可以使用内置工具自动修复目录权限,如下所示:

  • 如中所述,在打开mac电脑的电源按钮的同时按下
    Command+S
    ,进入单用户模式
  • 从菜单栏启动OSX磁盘实用程序,然后使用修复权限工具,如本节所述

  • 你在使用什么操作系统?你的~/.ssh/config中有bitbucket条目吗?@m79lkm,我没有这个路径。但是,我能够在以前的系统上成功地推送到这个存储库。在这个系统上,我有相同的~/.ssh目录和相同的内容,因为我从以前的系统(Mint)复制了它。如果你在移动文件时使用了
    cp
    ,那么你在新系统上的文件权限很可能会被弄乱
    rsync
    最适合移动文件和保留权限。@GuyHughes,应该有什么权限?在我的新系统上,它们都有root权限git@somehostname.com-T-vv?它可以是任何东西,具体取决于您要连接到的位置。如果您使用的是github.com,那么它将是
    sshgit@github.com
    ,而
    @
    符号前面的第一部分是ssh“用户名”(
    git
    ),但这与github.com上的用户名不同。如果您使用的是bitbucket.org,那么它将是
    git@bitbucket.org
    。你的第二个建议是
    和~/。。(父目录,通常是Linux上的/home和Mac OS X上的/Users)最多应设置为744。
    。所以我做了
    sudo chmod 744~/..
    ,我不能再启动我的mac了。@AlexanderSupertramp,我已经更新了我的答案。我从未建议您将
    /home
    目录权限设置为744。很抱歉造成混淆。您好。我遇到了完全相同的问题,但是在Windows操作系统上。在添加SSH密钥后,它工作了几天,之后出现了相同的错误。有什么建议吗?
    $ id -un && id -ug   # check output of this command before using!
    username
    groupname
    $ chown --recursive $(id -un):$(id -gn) ~