【问题标题】:SSH Key - Still asking for password and passphraseSSH 密钥 - 仍然要求输入密码和密码
【发布时间】:2014-02-01 10:06:23
【问题描述】:

当我克隆存储库时,Github 总是询问我的用户名和密码,这有点“忍受”。我想绕过这一步,因为它在我的工作流程中很烦人。

我尝试使用本指南设置 SSH 密钥(我成功地做到了)。 https://help.github.com/articles/generating-ssh-keys 我成功了。

我的问题是在克隆存储库(使用 SSH)时仍然要求我输入 github 密码和密码。我的理解是,在我设置了这个 SSH 密钥之后,我就不必再这样做了。

我有点不确定要问什么,所以我只说我的目标。

我希望能够克隆存储库,而不必一直输入我的 Github 信息

我的 SSH 密钥缺少什么?如果有人可以提供一些指导或资源,我将不胜感激,因为在 GitHub 中进行 SSH 身份验证时,我总是感到有些失落。

据我所知,这是一个测试是否正常运行的命令,以下是我控制台的输出:

~ $ ssh -T git@github.com
Saving password to keychain failed
Enter passphrase for key '/Users/MYNAME/.ssh/id_rsa':
Hi MYNAME! You've successfully authenticated, but GitHub does not provide shell access.

当我输入密码时,应该先失败吗?然后,当我输入密码时,它就会通过。

【问题讨论】:

  • 您在哪个操作系统中?现代 Linux 桌面会建议将您的密码存储在密钥环管理器中。在 Mac OS X 中也是如此。在 Windows 中,您可以使用 pageant,它是 putty 的一部分。在所有这些中,目标都是相同的:您在启动 PC 后只输入一次密码,密钥管理器代理将在后续使用中将其传递给 ssh,直到您重新启动。
  • 我在这里聚会有点晚了,但是在 github 的小克隆选项卡/按钮上有一个链接,上面写着“使用 SSH”。你想这样做。它将您的克隆链接更改为“git@github:username/project.git”之类的内容。如果你在 github 上添加了一个 SSH 密钥并让它在本地的 ssh-agent 上运行,那么你应该能够在不输入用户名或密码的情况下进行推送。

标签: git github ssh ssh-keys


【解决方案1】:

添加没有钥匙串的身份

有时您可能不希望将密码存储在钥匙串中,但又不想一遍又一遍地输入密码。

你可以这样做:

ssh-add ~/.ssh/id_rsa 

这将要求您输入密码,输入它,直到您重新启动它才会再次询问。

使用钥匙串添加身份

正如@dennis 在 cmets 中指出的那样,要通过将密码存储在您的钥匙串中来在重新启动时保留密码,您可以在添加这样的身份时使用 -K 选项(对于 Ubuntu 是 -k):

ssh-add -K ~/.ssh/id_rsa

再一次,它会要求你输入密码,输入它,这一次它不会再要求这个身份了。

【讨论】:

  • 请注意,这不会在重新启动时保留身份。添加密码时,您可以使用-K 选项将密码短语存储在钥匙串中,例如ssh-add -K ~/.ssh/id_rsa
  • 小写 -k 对我来说......(Linux Mint / Ubuntu 14.04 base)但是是的!终于整理好了……
  • 只运行命令“ssh-add”并输入一次密码,命令行不会再次提示您输入密码。
  • 你不需要任何参数;只需运行ssh-add 将自动添加~/.ssh/id_rsa(以及其他文件)。而且没有理由将输出发送到/dev/null;更好地查看它所做的报告。
  • 知道为什么我会收到“无法打开与您的身份验证代理的连接。”吗?
【解决方案2】:

如果您使用 HTTPs 网址,它总是会询问您的用户名/密码。

如果您在克隆/设置遥控器时正确使用了SSH。然后确保你有一个 ssh-agent 来记住你的密码。这样,您只需在终端会话中输入一次密码。

如果还是太烦人,那么只需设置一个不带密码的 ssh-key。

【讨论】:

  • 感谢您的回复。我一直只使用 HTTPs。我正在尝试实现 SSH 身份验证,并认为我设置了它。我需要安装 git 之外的 ssh-agent 吗?谢谢
  • 我只想指出,密码用于加密您的私钥,因此,如果您不使用密码,那么您的机器上的私钥将不会被加密。 这就像在您计算机上的文本文件中留下密码。
  • 有趣的是,我的 HTTPS 存储库从不要求输入密码,而我的 SSH 存储库总是这样做。
  • See this github doc 将远程的 URL 从 https 转换为 ssh。要检查远程的 URL 是 ssh 还是 https,请使用 git remote -v。从 https 切换到 ssh:git remote set-url origin git@github.com:USERNAME/REPOSITORY.git
  • 投反对票,因为“什么”应该包括“如何”。
【解决方案3】:

在 Mac OSX 上,您可以使用以下命令将您的私钥添加到钥匙串中:

ssh-add -K /path/to/private_key

如果您的私钥存储在 ~/.ssh 并命名为 id_rsa:

ssh-add -K ~/.ssh/id_rsa

然后系统会提示您输入密码,该密码将存储在您的钥匙串中。

编辑 - 处理重启

为了即使在重启后也不必填写密码,请将以下内容添加到您的 ssh 配置文件(通常位于 ~/.ssh/config)

Host *
  UseKeychain yes
  AddKeysToAgent yes
  IdentityFile ~/.ssh/id_rsa

【讨论】:

  • 在我的情况下,重启后它仍然提示输入密码(macOS Sierra 10.12.2)。关于如何解决这个问题的任何想法?
  • 没关系,我刚刚发现了问题。这是 Mac OS X 10.12 的一个错误(功能?),其中 ssh-agent 在启动期间不会自动在钥匙串上加载密码短语。 github.com/lionheart/openradar-mirror/issues/15361
  • @Groot,顺便说一句,按照其他答案中的建议,将“Host * UseKeychain yes”添加到“~/.ssh/config”,解决了这个问题。
  • 这应该是公认的答案。特别是~/.ssh中的配置文件
  • 我不断收到提示“输入密钥 .ssh/id_rsa: 的密码” - ssh-add -K ~/.ssh/id_rsa 解决了这个问题
【解决方案4】:

我在这里尝试了所有答案,这些答案都不起作用!我的密码在我的 Mac 的会话/重新启动之间不会保留。

我从阅读this OpenRadarthis Twitter discussion 中发现,macOS 10.12 Sierra 中的 ssh-agent 的Apple purposely changed the behaviour 不再自动加载以前的 SSH 密钥。为了保持与 El Cap 相同的行为,我做了以下操作:

  1. ssh-add -K ~/.ssh/id_rsa
    注意:将路径更改为您的 id_rsa 密钥所在的位置。
  2. ssh-add -A
  3. 创建(或编辑,如果存在)以下~/.ssh/config 文件:

    Host *
      UseKeychain yes
      AddKeysToAgent yes
      IdentityFile ~/.ssh/id_rsa
    

现在我的密码在我的 Mac 重新启动之间被记住了!

【讨论】:

  • 这可能对添加到githubosx 文档页面很有用。最难弄清楚为什么我的 Mac 运行 10.11 而我的另一台运行 10.12 的 Mac 表现不同。
  • 在 OSX 升级后发生在我身上,谢谢(如果您在 ~/.ssh/id_rsa 只有一个键,我认为不需要 ssh-add -A
  • 我刚刚升级到 macOS 10.12,这非常有用。谢谢!
  • 截至 2017 年 10 月,如果您使用的是 macOS 10.12 或更高版本,此答案正是您要寻找的答案。
  • 现在在 github 文档上:help.github.com/articles/…
【解决方案5】:

您可以删除密钥的密码

$ ssh-keygen -p [-P old_passphrase] [-N new_passphrase] [-f keyfile]

或者你可以运行

$ ssh-keygen -p

提示您输入密钥文件。默认是~/.ssh/id_rsa 所以按回车

系统会提示您输入当前密码。

然后会提示输入新密码,按回车

【讨论】:

  • 这应该高于许多将密码短语添加到钥匙串的几乎相同的答案。我不得不将我的公钥提供给管理员,并附上一个密码,每次输入都很烦人。当您对机器没有太多控制权时,这是一个干净的解决方案(-K-k-A 对我不起作用)。
  • 这是在重新启动后对我有用的唯一,所有 ssh-add -K、-k 等命令对我没有任何作用。
  • 它对我也很有效,我使用了第一种方法ssh-keygen -p -P MyOldPassPhrase -N "" -f ~/.ssh/mykeyfile。谢谢!
  • 这就是答案。
【解决方案6】:

TL;DR
您需要使用 ssh 代理。为此,请打开终端并 在推送到 git 之前,执行

ssh-add

在提示时输入您的密码。

查看原始 StackExchange 答案 here

【讨论】:

  • 这行得通,但结果是每次启动计算机时都必须重复此命令。
  • @WilliamGrand 这对我来说并非如此,但如果你这么说,当然,我相信你:]。我会看看我是否能找到任何东西,我会相应地更新答案。
【解决方案7】:

确保您的存储库也使用 ssh

mahtab@mahtab-Lenovo-G50-70:~/my-projects/jenkins-cje-2017$ git remote -v origin git@github.com:eMahtab/jenkins-cje-2017.git (fetch) origin git@github.com:eMahtab/jenkins-cje-2017.git (push)

不要使用 https,如果您的遥控器使用 https,那么即使您已将公钥添加到 Github 并将私钥添加到 ssh-agent,它也会不断询问密码。下面总是会要求输入密码

mahtab@mahtab-Lenovo-G50-70:~/my-projects/jenkins-cje-2017$ git remote -v origin https://github.com/eMahtab/jenkins-cje-2017.git (fetch) origin https://github.com/eMahtab/jenkins-cje-2017.git (push)

【讨论】:

  • 是的,区分两种远程 URL 类型对我很有帮助。这在git pullgit push 方面帮助了我。我将我的 url 从 HTTPS 类型切换到 SSH 类型,它起作用了——git pull 停止询问密码。
  • 可以用这个命令切换:git remote set-url origin git@github.com:USERNAME/REPOSITORY.git
【解决方案8】:

只需运行以下命令:

ssh-add -K

它永远不会要求您再次输入密码。

【讨论】:

  • 这很好用,但我有点担心运行随机命令。但是,如果您检查文档 ssh-add 只是“将私钥身份添加到身份验证代理”,而 -K 选项只是简单地使“添加身份时,每个密码短语也将存储在用户的钥匙串中。”
  • 实际上,直到我重新启动它才修复它:(
  • 在 Windows 的 bash shell 中,“-k”标志必须是小写的。仅供参考
  • 选项 -K 在 ssh-add 的早期版本中不可用。这就是为什么它对许多人不起作用的原因。选项 -k(小写)不一样,下次打开会话时您必须重新输入密码。
【解决方案9】:

我必须执行:

eval `ssh-agent -s`
ssh-add

注意:每次重新启动后,您都必须再次执行此操作。如果您想避免它,请将其输入到您的“.bashrc”文件中,该文件位于 Windows 上的 C:\Users\<<USERNAME>>\.bashrc 中。它可能是隐藏的,因此请确保您可以看到隐藏的文件。

找到解决方案here

【讨论】:

    【解决方案10】:

    如果您使用的是 Windows,这对我有用:

    eval `ssh-agent -s`
    ssh-add ~/.ssh/*_rsa
    

    它会在第二个命令中询问密码,就是这样。

    【讨论】:

    • 注销后重新登录时,每次都要重新输入密码。
    【解决方案11】:

    使用 ssh-add 命令将您的公钥添加到 ssh-agent。

    ssh-add
    

    确保 ssh 公钥,例如~/.ssh/id_rsa.pub 是您在 repo 设置中的内容。

    确保您实际上可以通过 ssh 进入服务器,例如对于 Bitbucket:

    ssh -T git@bitbucket.org
    

    更新 url 以从 https 移动到 ssh。您可以通过检查以下输出来检查您使用的是:

    git remote -v
    

    如果您在网址中看到 https://,那么您仍在使用 https。要更新它:获取 url 并将 https:// 替换为 ssh:// 例如 变化:

    https://git@bitbucket.org/../..
    

    收件人:

    ssh://git@bitbucket.org/../..
    

    参考: https://docs.github.com/en/github/using-git/changing-a-remotes-url#switching-remote-urls-from-https-to-ssh

    【讨论】:

      【解决方案12】:

      尝试ssh-agent,因为它在那里解释:https://help.github.com/articles/working-with-ssh-key-passphrases

      【讨论】:

        【解决方案13】:

        这个page on github 有你需要的答案。您必须从 https 切换到 ssh 身份验证。

        检查它的身份验证方式如下。

        $ git remote -v
        > origin  https://github.com/USERNAME/REPOSITORY.git (fetch)
        > origin  https://github.com/USERNAME/REPOSITORY.git (push)
        

        使用 git remote set-url 命令将远程的 URL 从 HTTPS 更改为 SSH。

        $ git remote set-url origin git@github.com:USERNAME/REPOSITORY.git
        

        再次测试

        $ git remote -v
        # Verify new remote URL
        > origin  git@github.com:USERNAME/REPOSITORY.git (fetch)
        > origin  git@github.com:USERNAME/REPOSITORY.git (push)
        

        就是这样。它现在可以工作了。

        【讨论】:

        • 如果您将远程 repo url 从 https 更改为 ssh,则此答案有效。谢谢。
        【解决方案14】:

        这对我有用:

        git config --global core.sshCommand "'C:\Windows\System32\OpenSSH\ssh.exe'"
        

        【讨论】:

        • 谢谢,没想到这一点,我使用带有配置的 windows ssh 通过 ssh 访问我的服务器,它可以无缝地使用密钥和存储密码,从没想过我也可以为 git 做到这一点.谢谢!
        【解决方案15】:

        曾在 LinuxMint/Ubuntu

        执行以下步骤

        第 1 步:

        转到文件 => /.ssh/config

        将下面几行保存到文件中

        Host bitbucket.org
            HostName bitbucket.org
            User git
            IdentityFile /home/apple/myssh-privatekey
            AddKeysToAgent yes
        

        别忘了添加这一行AddKeysToAgent yes

        第 2 步:

        打开终端并将keyset添加到ssh-add

        $ ssh-add -k /home/apple/myssh-privatekey
        

        提供密码。

        【讨论】:

          【解决方案16】:

          我最近升级到 macOS Mojave,并通过自制软件安装了一些工具,这似乎将 Apple 的 ssh-add 版本换成了另一个。我的ssh-add 默认版本没有-K 选项。这导致了以下错误:

          # ssh-add: illegal option -- K

          您可以通过运行which ssh-add 查看您拥有的ssh-add 版本。

          (我的存储在/usr/local/bin/ssh-add

          要解决这个问题,我必须将钥匙指向 Apple 版本

          /usr/bin/ssh-add -K ~/.ssh/id_rsa
          

          Git/GitHub 之后完美运行。更多信息请见:Error: ssh-add: illegal option -- K

          【讨论】:

          • 在装有 High Sierra 10.13.6 的 iMac 上遇到了同样的问题 - 这对我有用。谢谢!
          • 我的工作正常并随机开始再次要求输入密码 - 可能是在最近更新之后。这解决了它!谢谢
          【解决方案17】:

          此答案主要针对 Windows 用户,如果您在任何其他操作系统上使用 tfs、github 或 gitlab 克隆时遇到问题,也同样适用。

          使用 SSH 时的默认身份验证模式是私钥。每当由于某种原因失败时,ssh-agent 就会退回到基于用户名和密码的身份验证。

          基于默认密钥的身份验证可能失败的原因有多种。以下是最常见的情况:

          a) ssh-agent 找不到默认的私钥文件 id_rsa,并且没有明确指定其他密钥路径。

          b) 存储在服务器中的公钥不正确。

          c) 您尝试克隆的路径不正确。

          无论如何,要解决问题,首先执行带有详细日志记录的 git clone 命令:

          GIT_TRACE=1 GIT_SSH_COMMAND="ssh -vvv" git clone ssh://pathToYourRepo
          

          您可以浏览日志中的每个步骤,以直观了解问题可能是什么。


          (a) 情况下的故障排除

          • 确保您在 .ssh 目录中有默认密钥名称 id_rsa。您可能在使用 ssh-keygen 命令生成密钥时指定了一些不同的密钥名,或者根本没有任何密钥。

          • 如果您想指定不同的身份验证密钥,请使用以下命令:

             ssh-agent bash -c 'ssh-add ~/.ssh/anotherKey; git clone ssh://pathToYourRepo'
            

          (b)情况下的故障排除

          • 确保在服务器中存储公钥时没有多余的空格。

          (c)情况下的故障排除

          • 确保您没有尝试使用存储库路径的 https 版本进行克隆。

          【讨论】:

            【解决方案18】:

            对于 Mac OSX Sierra,我发现 Open Radar 的 github 问题中建议的修复解决了我的问题。似乎 Sierra 更改了默认行为(升级后我开始遇到此问题)。

            我发现这个特别有用: https://github.com/lionheart/openradar-mirror/issues/15361#issuecomment-249059061

            ssh-add -A 
            

            这导致我的身份被添加到代理中,之后我跑了

            ssh-add -K {/path/to/key}
            

            总结一下,在 OSX.12 中:

            ssh-add -K {/path/to/key}
            ssh-add -A 
            

            应该导致:

            Identity added: {/path/to/file} ({/path/to/file})
            

            编辑: 我注意到下次我完全重新启动(也就是代理停止并重新启动)时,这不再起作用。更完整的解决方案是上面提到的@ChrisJF:创建一个~/.ssh/config 文件。这是我的输出:

            $ cat ~/.ssh/config
            Host *
              UseKeychain yes
              AddKeysToAgent yes
              IdentityFile ~/.ssh/id_rsa
            

            您可以根据需要添加任意数量的IdentityFile 条目,但这是默认设置。这也是上面 openradar 链接 ATM 上的“趋势”答案。

            【讨论】:

            • 编辑后的解决了我的问题。 MacOS Mojave 10.14.3
            【解决方案19】:

            如果你之前为你的GIT使用密码认证,但现在使用SSH认证,你需要switch remote URLs from HTTPS to SSH

            git remote set-url origin git@github.com:USERNAME/REPOSITORY.git
            

            【讨论】:

              【解决方案20】:

              我已经设置了密码,但由于某种原因它不再识别它。所以我只是使用ssh-add -K 再次将身份文件添加到我的钥匙串中,它不再询问我的密码。

              【讨论】:

              • 这只会加载密钥而不是证书
              【解决方案21】:

              问题似乎是因为您是从 HTTPS 而不是 SSH 克隆的。我在这里尝试了所有其他解决方案,但仍然遇到问题。这对我有用。

              像这样使用osxkeychain helper

              1. 看看你是否安装了它。

                git credential-osxkeychain

              2. 如果未安装,系统会提示您将其作为 Xcode 命令行工具的一部分下载。

              3. 如果已安装,请使用全局 credential.helper 配置告诉 Git 使用 osxkeychain helper

                git config --global credential.helper osxkeychain

              下次克隆 HTTPS 网址时,系统会提示您输入用户名/密码,并授予对 OSX 钥匙串的访问权限。第一次执行此操作后,它应该保存在您的钥匙串中,您无需再次输入。

              【讨论】:

                【解决方案22】:

                一般来说,以下是允许您使用 ssh 无密码远程连接到服务器的步骤:

                • 创建一对 rsa 私钥和公钥

                  $ ssh-keygen -t rsa -b 4096 -C "your comments"
                  
                • 复制您的公钥并登录到您的远程服务器

                • 将您的公钥添加到 .ssh/authorized_keys

                • 如果您的计算机中有多个 ssh 密钥,您可以使用 ssh-add 添加您的密钥

                  $ ssh-add /path/to/private/key

                • 然后尝试 ssh 到您的服务器

                  $ ssh username@your_ip_address

                来源:http://diary-of-programmer.blogspot.com/2018/08/tips-how-to-ssh-to-your-digitalocean.html

                【讨论】:

                  【解决方案23】:

                  SSH Key - Still asking for password and passphrase

                  如果在 Windows 上使用 PuTTY 作为 SSH 密钥生成器,这个快速简单的解决方案是我使用纯 Windows 命令行的唯一可行的解​​决方案:

                  1. 您的 PuTTY 安装应附带多个可执行文件,其中包括 pageant.exeplink.exe
                  2. 使用 PuttyGen 生成 SSH 密钥时,该密钥以 .ppk 扩展名存储
                  3. 运行"full\path\to\your\pageant.exe" "full\path\to\your\key.ppk"必须被引用)。这将执行pageant 服务并注册您的密钥(输入密码后)。
                  4. 设置环境变量GIT_SSH=full\path\to\plink.exe不得被引用)。这会将与 git ssh-communication 相关的命令重定向到 plink,这将使用 pageantservice 进行身份验证,而无需再次询问密码。

                  完成!

                  注意 1: This documentation 在使用 GIT_SHH 环境变量设置时会发出一些特殊警告。我可以pushpullfetch 为命令添加任意数量的附加参数,一切对我来说都很好(无需按照其中的建议编写额外的脚本)。

                  注意 2:PuTTY 的安装路径通常在 PATH 中,因此可以省略。无论如何,我更喜欢指定完整路径。

                  自动化:

                  在从命令行使用 git 之前可以运行以下批处理文件。它说明了设置的用法:

                  git-init.bat
                     @ECHO OFF
                     :: Use start since the call is blocking
                     START "%ProgramFiles%\PuTTY\pageant.exe" "%HOMEDRIVE%%HOMEPATH%\.ssh\id_ed00000.ppk"
                     SET GIT_SSH=%ProgramFiles%\PuTTY\plink.exe
                  

                  无论如何,我在SystemPropertiesAdvanced.exe > Environment variables 中设置了GIT_SSH 变量,并将pageant.exe 添加为Run 注册表项(*)。

                  (*) 添加Run 注册表项的步骤>

                  1. 运行regedit.exe
                  2. 导航到HKEY_CURRENT_USER > Software > Microsoft > Windows > CurrentVersion > Run
                  3. 做(菜单)Edit > New > String Value
                  4. 输入任意(但唯一)名称
                  5. 执行(菜单)Edit > Modify...(或双击)
                  6. 输入pageant.exepublic key的引号括起来的路径,例如"C:\Program Files\PuTTY\pageant.exe" "C:\Users\username\.ssh\id_ed00000.ppk"(注意%ProgramFiles%等变量在此处不起作用,除非选择Expandable string value代替String value第 3 步。)。

                  【讨论】:

                    【解决方案24】:

                    添加到上述答案。 必须在 Windows 上再执行一步才能使 git 能够使用 ssh-agent。

                    必须在powershell中运行以下命令来更新环境变量:

                    PS> [Environment]::SetEnvironmentVariable("GIT_SSH", "$((Get-Command ssh).Source)", [System.EnvironmentVariableTarget]::User)

                    重新启动 VSCode、Powershell 或您用来激活 env 变量的任何终端。

                    完整的说明可以在 [这里] (https://snowdrift.tech/cli/ssh/git/tutorials/2019/01/31/using-ssh-agent-git-windows.html) 找到。

                    【讨论】:

                      【解决方案25】:

                      如果您为 git 使用 ssh url,当提示输入 ssh 密码时,请将用户名设为“git”,密码设为您系统的登录密码

                      【讨论】:

                      • 将存储库远程 URL 类型从 HTTPS 更改为 SSH 解决了我的问题。谢谢@MichaelR,你的文章真的很有帮助,虽然我没有从中读到任何东西:D
                      【解决方案26】:

                      使用 Github 提供的 ssh 远程 url 而不是 https

                      【讨论】:

                      • OP 明确表示他使用的是 SSH 而不是 HTTPS。
                      【解决方案27】:

                      我想为可能仍需要输入 密码,因为他们已经设置 IdentityOnly 为是。这可能是由多个密钥和身份文件引起的,它们是 git 或服务器的密钥。

                      在我生成密钥并将其复制到服务器之后:

                      ssh-keygen
                      ssh-copy-id -i ~/.ssh/12gpu_server.pub lerner@192.168.20.160
                      

                      我发现它不起作用。

                      然后我去查看~/.ssh/config文件,我在 底部:

                      Host *
                      IdentitiesOnly yes
                      

                      然后我在上面添加这个:

                      Host 12gpu
                      HostName 192.168.20.160
                      User lerner
                      IdentityFile ~/.ssh/12gpu_server
                      

                      我只需输入ssh 12gpu 即可登录。

                      然后您可以使用您喜欢的名称添加多个 ssh 密钥,然后您 只需要像上面四行这样的设置添加到配置中 文件。

                      Host 是您在连接到服务器时要输入的名称 之后; HostName 是服务器的 ip 或域,如 github.com; User 是您登录的用户名 在服务器中,例如 github 或 gitlab 的用户名或 git; IdentityFile 是您存储 您已生成的密钥。

                      【讨论】:

                        【解决方案28】:

                        如果您在没有第三方工具的情况下使用 Windows 和 GIT,并且您的密钥不受密码/密码短语的保护,请使用:

                        1. 环境变量 HOME 必须设置为您的用户配置文件(例如 C:\Users\Laptop)
                        2. 转到 C:\Users\Laptop\.ssh\ 文件夹并编辑“config”文件(或创建文件!)示例:C:\Users\Laptop.ssh\config(注意: 最后没有.!)
                        3. 像这样将你的 git-server 主机添加到“config”文件中:

                          #Example host entry
                          Host myhostname.com
                              HostName myhostname.com
                              User git
                              IdentityFile c:/users/laptop/.ssh/id_rsa.pub
                              PasswordAuthentication no
                              Port 422
                          
                        4. 像这样保存文件并克隆存储库:

                          git clone ssh://myhostname.com/git-server/repos/piccalc.git

                        您可以为“config”文件主机条目使用其他配置参数。这些可以在您的本地 git 安装文件夹中找到,例如“C:\Program Files\Git\etc\ssh\ssh_config”。摘录:

                        # Host *
                        #   ForwardAgent no
                        #   ForwardX11 no
                        #   RhostsRSAAuthentication no
                        #   RSAAuthentication yes
                        #   PasswordAuthentication yes
                        #   HostbasedAuthentication no
                        #   GSSAPIAuthentication no
                        #   GSSAPIDelegateCredentials no
                        #   BatchMode no
                        #   CheckHostIP yes
                        #   AddressFamily any
                        #   ConnectTimeout 0
                        #   StrictHostKeyChecking ask
                        #   IdentityFile ~/.ssh/identity
                        #   IdentityFile ~/.ssh/id_rsa
                        #   IdentityFile ~/.ssh/id_dsa
                        #   IdentityFile ~/.ssh/id_ecdsa
                        #   IdentityFile ~/.ssh/id_ed25519
                        #   Port 22
                        #   Protocol 2
                        #   Cipher 3des
                        #   Ciphers aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc
                        #   MACs hmac-md5,hmac-sha1,umac-64@openssh.com,hmac-ripemd160
                        #   EscapeChar ~
                        #   Tunnel no
                        #   TunnelDevice any:any
                        #   PermitLocalCommand no
                        #   VisualHostKey no
                        #   ProxyCommand ssh -q -W %h:%p gateway.example.com
                        #   RekeyLimit 1G 1h
                        

                        【讨论】:

                          【解决方案29】:

                          对我来说同样的问题,解决方案是:

                          请参阅此 github 文档以将远程 URL 从 https 转换为 ssh。要检查远程的 URL 是 ssh 还是 https,请使用 git remote -v。从 https 切换到 ssh: git remote set-url origin git@github.com:USERNAME/REPOSITORY.git @jeeYem

                          【讨论】:

                            【解决方案30】:

                            Mobaxterme 有一个 UI 界面

                            setting > configuration > SSH > SSH Agent > [check] Use internal SSH agent "moboAgent" > add [your id_rsa and restart mobaxterme to set changes]

                            【讨论】: