【问题标题】:permission denied (publickey) Error using git on windows 7权限被拒绝(公钥)在 Windows 7 上使用 git 时出错
【发布时间】:2011-01-08 18:50:38
【问题描述】:

当我想用这个命令推送到github时

git push origin master

我知道了

Permission denied (publickey).
fatal: The remote end hung up unexpectedly

那么,怎么了?

【问题讨论】:

    标签: git


    【解决方案1】:

    我发现我的问题是我使用的任何版本的 ssh-keygen 创建了具有错误文件名的文件...文件最初创建在 %USER_HOME%.ssh\ida_rsa 和 ida_rsa.pub 的位置,但 git 期望它们是 id_rsa 和 id_rsa.pub。

    我通过运行 git bash 解决了这个问题,然后运行 ​​ssh-keygen

    【讨论】:

      【解决方案2】:

      如果您已经生成了密钥,并且它具有默认名称,则问题可能出在缺少的环境变量中。

      在 Windows 7 上,右键单击“我的电脑”并转到属性。单击高级属性,然后单击环境变量按钮。那里添加一个用户环境变量

      Name: HOME 
      Value: %USERPROFILE%
      

      【讨论】:

        【解决方案3】:

        这是我用来实现此功能的分步指南。

        平台:Windows 7

        http://msysgit.github.io/安装msysgit

        在安装过程中,接受所有默认选项,除非出现“选择组件”选项。当它出现时,选择“Git Bash Here”选项。虽然这不是必需的,但它在 Windows 资源管理器中工作时添加了一个不错的上下文菜单,我发现这非常有用。

        一旦安装了 msysgit,Git Bash 也将被安装。通过以下两种方式之一打开 Git Bash:

        • 单击 Windows 开始键并开始输入 Git Bash
        • 或者,右键单击某处(例如您的桌面)并选择 Git Bash Here。此选项仅在安装了“Git Bash Here”上下文菜单时可用。

        在 Git Bash 的命令窗口中,输入:

        $ ssh-keygen -t rsa
        

        当要求输入文件名时,只需接受默认值即可。出现提示时选择一个强密码,您的公钥现在应该已保存。您的屏幕应如下所示:

        在记事本中打开公钥文件。该文件应位于此处:

        C:\Users\{username}\.ssh\id_rsa.pub
        

        将文件中的所有内容复制到剪贴板,然后转到 GitHub 的 SSH 设置页面:

        https://github.com/settings/ssh

        选择“添加 SSH 密钥”,输入有用的“标题”并将内容粘贴到“密钥”文本区域中。

        为了简化您的生活,您可以使用 SSH 代理来保存您的密码,这样您就不需要记住它了。为此,请在 Git Bash 中输入:

        $ eval `ssh-agent -s`
        $ ssh-add ~/.ssh/id_rsa
        

        系统会提示您输入密码。如果一切顺利,您的身份将被添加。注意:一旦你关闭你的 shell,这个密码就会被忘记。我不确定如何让这种情况在会话中持续存在,但也许有人可以提供帮助?

        要测试一切是否正常,请在 Git Bash 中输入:

        $ ssh -T git@github.com
        

        您应该会看到“成功”消息。

        来源:

        https://help.github.com/articles/generating-ssh-keys/

        https://help.github.com/articles/working-with-ssh-key-passphrases/

        explanation on why eval `ssh-agent -s` should be used instead of just ssh-agent -s
        

        https://stackoverflow.com/a/17848593/188740

        【讨论】:

        • 我做了这里描述的一切。除了密码保存。但它不起作用。我仍然收到“权限被拒绝(公钥)”。在命令“ssh -T git@github.com”之后。不知道哪里有问题。
        • 这很奇怪。我在 2 台机器(Windows 7 和 Windows 8)上完成了这个过程,它们都为我工作。您可以尝试保存密码吗?
        • 原来它不适用于控制台。任何应用都可以正常工作。
        • 其实命令:eval `ssh-agent -s`是关键。我使用这个单行命令来解决问题。
        • @GabrielDevillers 这里直接输入:$ eval `ssh-agent -s`
        【解决方案4】:

        我通过添加系统环境变量解决了类似的问题。关键是我指向 cmd 文件夹中的 git.exe

        名称:GIT
        值:C:\Program Files (x86)\Git\cmd\git.exe

        【讨论】:

        • 知道为什么有两个git.exe吗?一个在C:\Program Files (x86)\Git\bin,另一个在C:\Program Files (x86)\Git\cmd
        • 更改我的路径以使用 C:\Program Files (x86)\Git\cmd 而不是 \bin 解决了我的问题。
        【解决方案5】:

        我在 win 8 中有类似的概率。

        我犯了一个非常简单的错误:我已经在 git hub 帐户中创建了公钥,因此 y 密钥无法匹配。

        解决方案:

        • 从 github 帐户中删除 ssh 文件夹和密钥,然后再次执行此过程

        1) ssh-keygen -t rsa -C "your mail address"

        2) ssh -T git@github.com

        【讨论】:

          【解决方案6】:

          我是一个 git 的新手,并且正在按照网站上的一些安装说明进行操作,但遇到了权限被拒绝(公钥)错误。

          我按照说明生成 RSA 密钥对 (ssh-keygen -t rsa)。这工作正常,但我仍然收到错误。我没有意识到的是,您实际上必须访问 GIT 网站 (github.com),在他们的网站上注册并输入该密钥。

          我希望这可以帮助另一个可怜的新手。

          干杯!

          【讨论】:

            【解决方案7】:

            使用 Windows 8 设置您的 ssh 和 Github

            1. 如果显示“Permission denied (publickey)”,则您必须为您的密钥输入密码。不要只想按回车键...这对我有用...我花了五个小时才意识到按回车键使 OpenSSH 觉得您的密钥太公开了,这就是为什么它拒绝您去下一步。

            2. 如果显示“无法确定主机 'github.com (203.232.175.90)' 的真实性。”然后,您将必须完成此处显示的过程: [谷歌] (https://help.github.com/articles/error-permission-denied-publickey.)

            转到“验证公钥已附加到您的 GitHub 帐户”部分。您想从说帐户的部分开始。 (我假设您已经有一个帐户。

            另外,你想在 C:\RailsInstaller\Git.ssh 中,当我执行 'dir' 时,我注意到我有 '.', '..', '已知主机'。我必须通过执行以下操作来获取新密钥(我在 Github 网站上找到了这个):

            "ssh-keygen -t rsa -C "your_email@example.com" # 创建一个新的 ssh 密钥,使用提供的电子邮件作为标签 # 生成公钥/私钥 rsa 密钥对。

            并注意将保存密钥的文件。不要只按回车键。我的显示“(//.ssh/id_rsa)”我必须输入“/.ssh/id_rsa”以确保它在正确的目录中。

            您应该可以在命令行中输入 ssh。如果你不能这样做,你将不得不将它添加到你的路径中。

            【讨论】:

              【解决方案8】:

              尤里卡!

              显然,您可以使用plink 作为主要的 ssh 客户端,然后将您的密钥加载到 pageant 中(如果您像我一样,您已经这样做了):

              您可以通过将 GIT_SSH 环境变量设置为 plink.exe 路径来做到这一点,如下所示:

              设置 GIT_SSH=C:\Program Files\PuTTY\plink.exe

              或者,您可以使用 TortoiseGit 中的 plink:

              设置 GIT_SSH=c:\Program Files\TortoiseGit\bin\TortoisePLink.exe

              致谢:原始解决方案取自this blog post

              【讨论】:

              • 宾果游戏,这就是我要找的。 :-) 您可以通过控制面板 > 系统 > 高级系统设置 > 环境变量将这些值设置为永久环境变量。
              • 经过几周的痛苦也想出了这个解决方案)实际上将 plink.exe 复制到 c:\windows,因为设置 env 变量并没有真正帮助。
              • Putty 在 64 位系统上的永久命令行版本是:setx GIT_SSH "C:\Program Files (x86)\PuTTY\plink.exe"
              • 太棒了!仍然在 2020 年的恩典之年,这篇文章非常有帮助!我正在运行 Win7(是的,我知道)并使用 PuTTY。在这里添加一件重要的事情(即在链接的博客文章中):我在从命令行将指纹添加到已知主机时遇到了很多问题。解决方案是打开 PuTTY 并输入例如github.comhost 中输入,即可接受主机。
              【解决方案9】:

              您的 heroku 密钥可能有问题。试试:

              heroku keys:add
              

              这里有类似的问题:Heroku Git - fatal: The remote end hung up unexpectedly

              【讨论】:

                【解决方案10】:

                这是针对具有相同错误签名的非常具体问题的解决方案。这是我犯的错误,而且很容易犯。基本上,而不是这样做

                  git remote add origin git@github.com:myusername/myrepo.git
                

                我做了这个(注意错字)

                  git remote add origin get@github.com:myusername/myrepo.git
                

                http://www.celticwolf.com/blog/2011/02/08/git-permission-denied-publickey/

                【讨论】:

                  【解决方案11】:

                  我也遇到过类似的问题:

                  我使用 git bash 在某个目录中创建了“redssh”和“redssh.pub”。 权限被拒绝...

                  但是,“id_rsa.pub”和“id_rsa”出现在: C:/Users/myName/.ssh/

                  将 id_rsa.pub 内容复制到 github

                  【讨论】:

                    【解决方案12】:

                    问题可能与 ssh.exe 在 PATH 环境变量中的顺序有关。

                    在我的情况下,C:\Program Files(x86)\git 和我的 C:\cwgwin 目录中都有一个 ssh.exe。当我在我的 Git Bash 中时,一切正常(它在 git 目录中使用 ssh),但是当我在命令提示符中时,它在我的 cygwin 目录中使用 ssh。

                    当我尝试访问 github 时,无法使用我的私钥找到 .ssh 文件夹,因为该密钥未附加到命令提示符使用的 ssh(即 C:\cygwin 之一),这就是为什么我收到了 Permission Denied 错误。

                    我所做的是重命名(或删除)我的 C:\cygwin 目录中的 git.exe 和 ssh.exe,并确保 C:\Program Files(x86)\git 出现在 C:\cwgwin 之前路径顺序。

                    【讨论】:

                    • 如果您实际上更喜欢使用 cygwin git 而不是 msysgit 怎么办?它是最新的...
                    【解决方案13】:

                    这是 Windows 7 的默认输出。

                    c:\test\app>ssh-keygen -t rsa
                    Generating public/private rsa key pair.
                    Enter file in which to save the key (//.ssh/id_rsa):
                    Could not create directory '//.ssh'.
                    Enter passphrase (empty for no passphrase):
                    Enter same passphrase again:
                    open //.ssh/id_rsa failed: No such host or network path.
                    Saving the key failed: //.ssh/id_rsa.
                    

                    按照http://help.github.com/win-set-up-git/ ?? 使用 git 而不是命令提示符

                    【讨论】:

                    • 只是想补充一点,GitHub 的便携版本会给你带来很多痛苦,请继续安装它。
                    【解决方案14】:

                    我能够通过以下方式解决此问题:

                    当你这样做时:

                    ssh-keygen -t rsa
                    

                    它会提示您(可选)输入文件名以保存生成的密钥。 指定文件名浪费了我一整天!第二天我让它使用默认值 文件名和问题消失了!想象!!

                    平台是Win7和msysgit。

                    【讨论】:

                    • 对于 Windows 和 msysgit:如果为您的密钥使用自定义文件名(而不是默认的 id_rsa),请确保将其添加到 ~/.ssh/configIdentityFile ~/.ssh/customname(替换 customname使用您的密钥名称,不带.pub)。这在 Linux 环境中似乎没有必要。
                    • 我已经有一个星期的问题了。谢谢。
                    • 在什么情况下可以保留默认名称?因为必须指定一些文件名?
                    • @user1459144 当它提示您输入文件名时,会显示默认文件名。据我所知,如果您不输入任何文件名(即只需按 Enter 键),它将使用默认文件名。
                    • 你拯救了我的一天,我生成了密钥然后将 .pub 一个添加到我的 github 帐户然后它工作正常。
                    【解决方案15】:

                    您是否为自己生成了一个 SSH 密钥并将其添加到您的 Github 帐户中?他们有这个here的指南。

                    【讨论】:

                    • 您好,我已经尝试了上述 url 的步骤。但是在执行 ssh-add ~/.ssh/id_rsa 之后,它会抛出错误 "could not open a connection to your authentication part" 。你能帮我吗
                    猜你喜欢
                    • 1970-01-01
                    • 2014-03-18
                    • 1970-01-01
                    • 2020-01-04
                    • 2013-11-08
                    • 1970-01-01
                    • 1970-01-01
                    • 2020-12-30
                    相关资源
                    最近更新 更多