【问题标题】:Git SSH public key authentication failed with git on Azure DevOpsGit SSH 公钥身份验证在 Azure DevOps 上使用 git 失败
【发布时间】:2018-10-25 08:51:08
【问题描述】:

我正在尝试将 git 存储库从 PowerShell 推送到 Azure DevOps 存储库,但在尝试推送时我不断收到不同的身份验证错误。

我希望有人能对我检查的内容有所了解,并进行适当的演练。

例如,

git remote add origin git@ssh.dev.azure.com:v3/MyAzure/MyProject/MyRepo
git push -u origin --all

我不断得到:

git@ssh.dev.azure.com 的密码:

我输入了各种密码,但仍然失败。它在说哪个密码?

或者,我也得到了:

权限被拒绝,请重试。

致命:无法从远程存储库读取。

请确保您具有正确的访问权限并且存储库存在。

验证:

$ ssh -T myemail@mycompany.com
ssh: connect to host mycompany.com  port 22: Connection refused

我做了以下事情:

  • 在 Azure DevOps 中创建了一个存储库
  • 根据 Microsoft 的文档,使用 git-bash 创建了一个 SSH 密钥,复制并粘贴到 Azure DevOps 安全中,不带空格。
  • 转到我的个人资料/安全并添加 SSH 密钥(在 git-bash 中生成)

我错过了显而易见的事情吗?使用个人访问令牌更好吗?谁能提供正确步骤的演练?

【问题讨论】:

  • 请按照this一步步指导
  • 我做了。要我重做吗?
  • Git clone git@ssh.dev.azure.com:v3/fabrikam-fiber/FabrikamFiber/FabrikamFiber 工作正常吗?
  • @Jayendran 它要求我输入密钥 .ssh/id_rsa 的密码,将其留空并按 Enter,然后要求我输入 git@ssh.dev.azure.com 的密码
  • @Jayendran 我有同样的问题,我输入了为我的 ssh 密钥设置的密码,但随后我被要求输入 git@ssh.dev.azure.com's password

标签: git azure-devops


【解决方案1】:

这对我有用

~/.ssh/中添加配置文件

并添加这些行

Host ssh.dev.azure.com
IdentityFile ~/.ssh/my_ssh_private_key
IdentitiesOnly yes

@wcoder 的 link 帮助了

【讨论】:

  • 谢谢!我忘记了“ssh”。在我的配置文件中的“主机”条目的前面。您的解决方案运行良好!
  • 你的配置文件是什么样的?你能提供这个文件应该是什么的链接吗?
  • 这对我也有用,我有一个 id_ed25519 用于 github,配置文件中有一个条目,我认为它是通配符 (*),这显然不适用于 azure。
【解决方案2】:

在此之前,我已经尝试了其他答案,但没有任何效果。最后,this article 在 Fedora 中为我找到了解决方案。

使用 -v 开关 (ssh -v -T git@ssh.dev.azure.com) 运行 ssh 会发现此错误:

debug1: send_pubkey_test: no mutual signature algorithm

解决方法是将此行添加到客户端配置文件(~/.ssh/config):

PubkeyAcceptedKeyTypes +rsa-sha2-256,rsa-sha2-512

【讨论】:

  • 这解决了通过 SSH 连接到 RouterOS 设备时的问题。我猜他们最近在更新中改变了一些东西,因为几个月前我没有遇到这个问题。
  • 补充上述解决方案,为我工作
【解决方案3】:

我相信@Schalton 的评论是对的:SSH 验证失败,所以提示通过。

遇到了同样的问题。通过将密钥生成为默认值 ('id_rsa') 而不是使用其他名称(尝试了其他名称,但没有一个起作用),“解决了它”。

[####@#### .ssh]$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/guille/.ssh/id_rsa): id_rsa
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in id_rsa.
Your public key has been saved in id_rsa.pub.

编辑: 正如@LHM 所述,保存密钥的文件的默认值(无需输入)显示在括号中。

【讨论】:

  • 我在 /home/ubuntu/.ssh/ > 中有一个同名的 id_rsa.pub 文件,但我仍然收到此消息“git@ssh.dev.azure.com 的密码: “在外壳中。谁能解释一下这个
  • 这帮助了很多人!只需解决我生成新密钥的问题
【解决方案4】:

TL;DR: 原来括号中显示的路径和文件名(例如/home/guille/.ssh/id_rsa是一个默认值,可以简单地接受将其留空并点击Enter


扩展答案:我也有同样的问题。我犯了与@eltbus 相同的错误(尝试自己命名文件),因此他坚持使用默认值“id_rsa”的回答对我很有帮助。我还意识到,当我生成 rsa 密钥对时,我将 id_rsa.pub 保存到了错误的文件夹中。 (只有输入id_rsa不带前导文件路径,才能保存到不同的文件夹。)

如果您只需点击Enter 接受默认文件名和位置,而不是输入路径和/或文件名,就可以避免上述两个错误。

例子:

[####@#### .ssh]$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/guille/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in id_rsa.
Your public key has been saved in id_rsa.pub.

【讨论】:

  • 将文件名留空对我有用。即使您输入相同的文件名 id_rsa 仍然无法正常工作,因为它将保存在父文件夹中。
【解决方案5】:

我意识到这个问题提到了 powershell。但是,其他操作系统上的标题和标签可能最终会出现在这里,并且从 mac 和 linux 访问 Azure Devops 存在一个常见问题。

要为 mac 和 linux 解决此问题,请添加 IdentitiesOnly yes~/.ssh/config

这是 Azure Devops 的常见问题。不幸的是,我不确定为什么会修复它。

【讨论】:

【解决方案6】:

我也有同样的问题。

我的解决方案是:

我尝试使用sudo git clone... 时的路径无权访问我的公钥和私钥位置:\home\localuser\.ssh\...

为了解决这个问题,我将目标路径的所有权更改为同一个用户:组件我的密钥被存储并避免使用sudo git clone....,现在我在没有sudo 的情况下使用git clone,一切正常。

希望你明白……

【讨论】:

  • 这真的是同一个问题吗?阅读这个问题,我认为它与您试图解决的问题不同。您的问题是关于使用sudo 进行克隆(这是一个坏主意)。实际问题似乎是关于正确设置 SSH 密钥。
【解决方案7】:

我看到我的 repo ssh URL 与我的 DevOps URL 不同,在我的情况下,有效的方法是在我的 ~/.ssh 文件夹中添加配置文件,其中包含以下信息:

Host vs-ssh.visualstudio.com <-- hostname found in my repo SSH URL
    IdentityFile ~/.ssh/id_rsa_vsonline <-- your key name
    IdentitiesOnly yes

然后用

测试它
ssh -v vs-ssh.visualstudio.com

在跟踪中,我得到了类似

已通过 vs-ssh.visualstudio.com ([IP]:22) 的身份验证。

【讨论】:

    【解决方案8】:

    当您在 Azure DevOps 的设置页面上粘贴密钥时,不要更改任何内容,包括附加在公钥末尾的空格。

    【讨论】:

      【解决方案9】:

      我使用了 Azure DevOps 不支持的 GitHub 推荐的 Ed25519 算法密钥,因此我生成了一个标准密钥。问题是我忘记添加密钥了:

      ssh-add -k ~/.ssh/id_rsa
      

      【讨论】:

        【解决方案10】:

        我关注了the official permissions denied troubleshooting guide,结果我还是had to re-generate the key。但我认为最好遵循指南,因为它提供了很多不同场景的信息,其中大部分在这里没有提到。

        【讨论】:

          【解决方案11】:

          登录您的 Azure DevOps。转到 Repos > Files,然后单击 Clone。最后,在 HTTPS 选项卡下,单击 Generate Git Credentials

          【讨论】:

          • 这是用于通过 HTTPS 而不是 SSH 进行克隆的。
          【解决方案12】:

          我尝试了所有答案,但没有成功。事实证明,只需将 id_rsa 和 id_rsa.pub 文件放在我的用户文件夹下的 .ssh 文件夹中即可。

          因此,通过在以下位置之间移动文件(id_rsa 和 id_rsa.pub),它解决了问题并且身份验证成功。

          发件人:

          C:\Users\My User\
          

          收件人:

          C:\Users\My User\.ssh\
          

          【讨论】:

            【解决方案13】:

            像 Eltbus Answer 一样,我通过将密钥生成为默认值 ('id_rsa') 而不是使用其他名称(尝试了其他名称,但均无效)来“解决了它”。

            然后我只是按照这些步骤进行

            https://docs.microsoft.com/en-us/azure/devops/repos/git/use-ssh-keys-to-authenticate?view=azure-devops#questions-and-troubleshooting

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2020-09-22
              • 2019-09-28
              • 1970-01-01
              • 2014-08-24
              相关资源
              最近更新 更多