zoukankan      html  css  js  c++  java
  • Git SSH public key authentication failed with git on Azure DevOps

    Git SSH public key authentication failed with git on Azure DevOps

    This worked for me

    adding a config file in ~/.ssh/

    and adding these lines

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

    This link by @wcoder helped

    Q: I have multiple SSH keys. How do I use different SSH keys for different SSH servers or repos?

    A: Generally, if you configure multiple keys for an SSH client and connect to an SSH server, the client can try the keys one at a time until the server accepts one.

    However, this doesn't work with Azure DevOps for technical reasons related to the SSH protocol and how our Git SSH URLs are structured. Azure DevOps will blindly accept the first key that the client provides during authentication. If that key is invalid for the requested repo, the request will fail with the following error:

    remote: Public key authentication failed.
    fatal: Could not read from remote repository.
    

    For Azure DevOps, you'll need to configure SSH to explicitly use a specific key file. One way to do this to edit your ~/.ssh/config file (for example, /home/jamal/.ssh or C:\Users\jamal\.ssh) as follows:

    # The settings in each Host section are applied to any Git SSH remote URL with a
    # matching hostname.
    # Generally:
    # * SSH uses the first matching line for each parameter name, e.g. if there's
    #   multiple values for a parameter across multiple matching Host sections
    # * "IdentitiesOnly yes" prevents keys cached in ssh-agent from being tried before
    #   the IdentityFile values we explicitly set.
    # * On Windows, ~/.ssh/your_private_key maps to %USERPROFILE%\.ssh\your_private_key,
    #   e.g. C:\Users\<username>\.ssh\your_private_key.
    
    # Most common scenario: to use the same key across all hosted Azure DevOps
    # organizations, add a Host entry like this:
    Host ssh.dev.azure.com
      IdentityFile ~/.ssh/your_private_key
      IdentitiesOnly yes
    
    # This model will also work if you still use the older SSH URLs with a
    # hostname of vs-ssh.visualstudio.com:
    Host vs-ssh.visualstudio.com
      IdentityFile ~/.ssh/your_private_key
      IdentitiesOnly yes
    
    # Less common scenario: if you need different keys for different organizations,
    # you'll need to use host aliases to create separate Host sections.
    # This is because all hosted Azure DevOps URLs have the same hostname
    # (ssh.dev.azure.com), so SSH has no way to distinguish them by default.
    #
    # Imagine that we have the following two SSH URLs:
    # * git@ssh.dev.azure.com:v3/Fabrikam/Project1/fab_repo
    #   * For this, we want to use `fabrikamkey`, so we'll create `devops_fabrikam` as
    #     a Host alias and tell SSH to use `fabrikamkey`.
    # * git@ssh.dev.azure.com:v3/Contoso/Project2/con_repo
    #   * For this, we want to use `contosokey`, so we'll create `devops_contoso` as
    #     a Host alias and tell SSH to use `contosokey`.
    #
    # To set explicit keys for the two host aliases and to tell SSH to use the correct
    # actual hostname, add the next two Host sections:
    Host devops_fabrikam
      HostName ssh.dev.azure.com
      IdentityFile ~/.ssh/private_key_for_fabrikam
      IdentitiesOnly yes
    Host devops_contoso
      HostName ssh.dev.azure.com
      IdentityFile ~/.ssh/private_key_for_contoso
      IdentitiesOnly yes
    #
    # Then, instead of using the real URLs, tell Git you want to use these URLs:
    # * git@devops_fabrikam:v3/Fabrikam/Project1/fab_repo
    # * git@devops_contoso:v3/Contoso/Project2/con_repo
    #
    
    # At the end of the file, you can put global defaults for other SSH hosts you
    # may connect to.  Note that "*" also matches any hosts that match the sections
    # above, and remember that SSH uses the first matching line for each parameter name.
    Host *
  • 相关阅读:
    直接插入排序
    简单选择排序
    xml错误: A pseudo attribute name is expecte
    接口, 抽象类
    The hierarchy of the type AudienceAdvice is inconsistent 《spring in action》
    spring配置文件出错解决办法
    Sangfor tester 实习总结
    求一棵树的面积,2014百度开发测试笔试题
    百度2014校招-深圳-开发测试-求最小“不重复数”
    二个数相加,不使用加减乘除
  • 原文地址:https://www.cnblogs.com/chucklu/p/15479011.html
Copyright © 2011-2022 走看看