【问题标题】:After setting Azure DevOps ssh key and git config - it is still asking for a password设置 Azure DevOps ssh 密钥和 git config 后 - 它仍然要求输入密码
【发布时间】:2021-08-20 16:05:37
【问题描述】:

工作开始使用 Azure DevOps,我试图在我的家用计算机上克隆一个 repo。我创建了一个 ssh 密钥,将其添加到密钥列表中,并将我的 git 配置更改为我的工作电子邮件。但是,azure 仍然要求输入密码...

     (base) Name-MacBook-Pro:Company Name$ git clone git@ssh.dev.azure.com:v3/Company/AI/Repo
     Cloning into 'Repo'...
     Enter passphrase for key '/Users/Name/.ssh/id_rsa': 
     git@ssh.dev.azure.com's password: 
     Permission denied, please try again.
     git@ssh.dev.azure.com's password: 
     git@ssh.dev.azure.com: Permission denied (password,publickey).

____________编辑________________

尝试再次生成,但我仍然遇到问题

创建新的 ssh 密钥

ssh-keygen -t rsa -b 4096 -C “work@email.com” -f ~/.ssh/work_id_rsa

复制

猫 ~/.ssh/work_id_rsa |复制

添加到组织并尝试克隆

ssh-agent bash -c 'ssh-add ~/.ssh/work_id_rsa; git clone https://company@dev.azure.com/Repo'

Cloning into 'Repo'...
Password for 'https://company@dev.azure.com': 
fatal: Authentication failed for 'https://comapny@dev.azure.com/Repo'

【问题讨论】:

  • 是否为 LFS 启用了目标 repo?您可能需要改用凭据管理器(或 HTTPS 传输)...
  • 嗨,最近怎么样?你现在用 SSH 密钥成功克隆 repos 了吗?如果您仍有任何问题,请随时发表评论。
  • stackoverflow.com/questions/43868402/… 用户声明仅在 ssh 失败时才请求密码。不确定这是不是同一个问题
  • @Bazzert,不一样,但相似。重新生成密钥时,请确保以下详细信息,1。当您使用命令将公钥复制到 Azure Devops 中时,密钥末尾会有一个空行,DELETE 它。 2。确保在您的本地机器中,只有一对 SSH 密钥。 3. 如果以上都正确但仍然失败,请使用ssh-keygen -t rsa -b 4096 命令重新生成密钥,然后手动将公钥复制到 Azure Devops。
  • 在另一台计算机上,新的 linux 构建,执行 ssh keygen,添加到 org,并使用 git-config 设置用户/电子邮件。我认为导致此问题的 ssh 密钥之外存在问题。

标签: azure-devops


【解决方案1】:

如果这是我们这边(Microsoft)可能导致的问题。我再次尝试使用 SSH 克隆并成功:

这个问题应该是由您的 SSH 密钥格式引起的。由于我不清楚您使用哪种方法生成密钥,但在您的问题中,应该是因为公钥验证失败,所以它要求您输入帐户的密码。

确保您的私钥具有以下格式:

-----BEGIN RSA PRIVATE KEY-----

*
*
*

-----END RSA PRIVATE KEY-----

如果没有,请使用以下命令重新生成:

ssh-keygen -t rsa 

然后将公钥配置到组织中。

【讨论】:

    【解决方案2】:

    编辑

    一段时间以来,我一直在使用多个 Azure DevOps 帐户,我只想指出您可以使用正确密钥的另外 2 种方法:

    1. 使用-i 标志

    -i 身份文件
    选择从中读取 RSA 或 DSA 身份验证的身份(私钥)的文件。协议版本 1 的默认值是 ~/.ssh/identity,协议版本 2 的默认值是 ~/.ssh/id_rsa 和 ~/.ssh/id_dsa。身份文件也可以在配置文件中基于每个主机指定。可以有多个 -i 选项(以及在配置文件中指定的多个身份)。

    参考:https://linux.die.net/man/1/ssh

    1. 使用配置文件 (~/.ssh/config) 并更改主机名(远程)
      而不是git clone git@ssh.dev.azure.com:v3/Company/AI/Repo 你会git clone git@whatever_name_you_configured:v3/Company/AI/Repo

    Microsoft 有一篇关于它的帖子可能会有所帮助: https://docs.microsoft.com/en-us/azure/devops/repos/git/use-ssh-keys-to-authenticate?view=azure-devops#q-i-have-multiple-ssh-keys--how-do-i-use-different-ssh-keys-for-different-ssh-servers-or-repos


    原答案:

    生成密钥的方法实际上很好(OpenSSH),我的.ssh 上有多个 SSH 密钥,所以我认为这也无所谓。使用 same 算法,您可能不能拥有多个密钥。 我认为真正的问题是密钥的名称

    你用过:
    ssh-keygen -t rsa -b 4096 -C “work@email.com” - f ~/.ssh/work_id_rsa
    这很棒(大量字节:)

    但测试连接时永远找不到“work_id_rsa”,例如:
    ssh -v git@ssh.dev.azure.com

    只是为了测试我重命名并删除了我的。

    简而言之,结果如下:

    pires@avell:~$ ssh -v git@ssh.dev.azure.com
    OpenSSH_8.2p1 Ubuntu-4ubuntu0.1, OpenSSL 1.1.1f  31 Mar 2020
    debug1: Reading configuration data /etc/ssh/ssh_config
    debug1: /etc/ssh/ssh_config line 19: include /etc/ssh/ssh_config.d/*.conf matched no files
    debug1: /etc/ssh/ssh_config line 21: Applying options for *
    debug1: Connecting to ssh.dev.azure.com [51.144.61.32] port 22.
    debug1: Connection established.
    (removed for brevity)
    debug1: Authenticating to ssh.dev.azure.com:22 as 'git'
    (removed for brevity)
    debug1: Host 'ssh.dev.azure.com' is known and matches the RSA host key.
    debug1: Found key in /home/pires/.ssh/known_hosts:3
    debug1: rekey out after 4294967296 blocks
    debug1: SSH2_MSG_NEWKEYS sent
    debug1: expecting SSH2_MSG_NEWKEYS
    debug1: SSH2_MSG_NEWKEYS received
    debug1: rekey in after 4294967296 blocks
    
    (((((important detail here:)))))
    debug1: Will attempt key: /home/pires/.ssh/id_rsa
    debug1: Will attempt key: /home/pires/.ssh/id_dsa
    debug1: Will attempt key: /home/pires/.ssh/id_ecdsa
    debug1: Will attempt key: /home/pires/.ssh/id_ecdsa_sk
    debug1: Will attempt key: /home/pires/.ssh/id_ed25519 ED25519 SHA256: *************
    debug1: Will attempt key: /home/pires/.ssh/id_ed25519_sk
    debug1: Will attempt key: /home/pires/.ssh/id_xmss
    debug1: SSH2_MSG_SERVICE_ACCEPT received
    debug1: Authentications that can continue: password,publickey
    debug1: Next authentication method: publickey
    debug1: Trying private key: /home/pires/.ssh/id_rsa
    debug1: Trying private key: /home/pires/.ssh/id_dsa
    debug1: Trying private key: /home/pires/.ssh/id_ecdsa
    debug1: Trying private key: /home/pires/.ssh/id_ecdsa_sk
    debug1: Offering public key: /home/pires/.ssh/id_ed25519 ED25519 SHA256:************
    (((((and here:)))))
    debug1: Authentications that can continue: password,publickey
    debug1: Trying private key: /home/pires/.ssh/id_ed25519_sk
    debug1: Trying private key: /home/pires/.ssh/id_xmss
    debug1: Next authentication method: password
    git@ssh.dev.azure.com's password:
    

    所以,实际上 OpenSSH 永远不会找到它。我的意思是,我没有在那里放置work_id_rsa,但这没关系,因为它不会查找文件夹中的所有内容,在您的情况下,它希望/home/pires/.ssh/id_rsa 正好在那里。或者更好,无论 ~ 指向 + /.ssh/id_encryptionmethod

    另外,由于它找不到要验证的私钥,它回退到密码

    【讨论】:

      猜你喜欢
      • 2014-02-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-22
      • 2013-08-09
      • 2016-01-28
      • 2014-12-11
      • 1970-01-01
      相关资源
      最近更新 更多