Использование проверки подлинности с ключом SSH

Azure DevOps Services | Azure DevOps Server 2022 — Azure DevOps Server 2019 | TFS 2018

Вы можете подключиться к репозиториям Git средствами SSH в macOS, Linux или Windows для безопасного подключения с помощью проверки подлинности HTTPS.

Внимание

URL-адреса SSH изменились, но старые URL-адреса SSH продолжают работать. Если вы уже настроили SSH, обновите удаленный URL-адрес до нового формата:

Актуальные URL-адреса SSH начинаются с ssh.dev.azure.com. Предыдущие URL-адреса используются vs-ssh.visualstudio.com.

  • Проверьте, какие удаленные серверы используют SSH. Запустите git remote -v в оболочке или используйте вместо этого клиент GUI.
  • Посетите репозиторий в Интернете и выберите "Клонировать".
  • Выберите SSH и скопируйте новый URL-адрес SSH .
  • В оболочке выполняется git remote set-url <remote name> <new SSH URL> для каждого удаленного репозитория, который требуется обновить. Кроме того, используйте клиент графического интерфейса для обновления удаленный URL-адрес.

Как работает проверка подлинности ключа SSH

Проверка подлинности открытого ключа SSH работает с асимметричной парой созданных ключей шифрования. Открытый ключ предоставляется совместно с Azure DevOps и используется для проверки первоначального подключения ssh. Закрытый ключ хранится в безопасности и безопасности в системе.

Настройка проверки подлинности ключа SSH

Ниже описана настройка проверки подлинности ключа SSH на следующих платформах с помощью командной строки (также называемой shell):

Примечание.

По состоянию на Visual Studio 2017 SSH можно использовать для подключения к репозиториям Azure DevOps Git.

Совет

В Windows мы рекомендуем использовать диспетчер учетных данных Git или личные маркеры доступа.

Шаг 1. Создание ключей SSH

Примечание.

Если вы уже создали ключи RSA SSH в системе, пропустите этот шаг и настройте ключи SSH. Чтобы проверить это, перейдите в домашний каталог и просмотрите папку .ssh (%UserProfile%\.ssh\ в Windows или ~/.ssh/ linux, macOS и Windows с помощью Git Bash). Если вы видите два файла с именем id_rsa и id_rsa.pub соответственно продолжите настройку ключей SSH.

Чтобы использовать аутентификацию на основе ключей, необходимо заранее создать для клиента одну или несколько пар открытого и закрытого ключей. ssh-keygen.exe используется для создания файлов ключей и можно указать алгоритмы DSA, RSA, ECDSA или Ed25519. Если алгоритм не указан, используется RSA.

Примечание.

Единственным типом ключа SSH, поддерживаемым Azure DevOps, является RSA.

Чтобы создать файлы ключей с помощью алгоритма RSA, выполните следующую команду из PowerShell или другой оболочки, например bash на клиенте:

ssh-keygen

Выходные данные команды должны отображать следующие выходные данные (где username заменяется вашим именем пользователя):

Generating public/private rsa key pair.
Enter file in which to save the key (C:\Users\username/.ssh/id_rsa):

Можно нажать клавишу ВВОД, чтобы принять вариант по умолчанию, или указать путь и (или) имя файла для создания файлов ключей. На этом этапе вам будет предложено указать парольную фразу для шифрования файлов закрытого ключа. Парольная фраза может быть пустой, но не рекомендуется. Парольная фраза в сочетании с файлом ключа позволяет выполнить двухфакторную аутентификацию.

Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in C:\Users\username/.ssh/id_rsa.
Your public key has been saved in C:\Users\username/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:FHK6WjcUkcfQjdorarzlak1Ob/x7AmqQmmx5ryYYV+8 username@LOCAL-HOSTNAME
The key's randomart image is:
+---[RSA 3072]----+
|      . ** o     |
|       +.o= .    |
|      . o+       |
|      .+. .      |
|     .ooS  .     |
|  . .oo.=.o      |
|   =.= O.= .     |
|  . B BoE + . .  |
|   . *+*o. .o+   |
+----[SHA256]-----+

Теперь у вас есть пара ключей public/private rsa в указанном расположении. Файлы PUB являются открытыми ключами, а файлы без расширения — закрытыми.

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----        10/11/2022   6:29 PM           2610 id_rsa
-a----        10/11/2022   6:29 PM            578 id_rsa.pub

Внимание

Никогда не делитесь содержимым закрытого ключа. Если закрытый ключ скомпрометирован, злоумышленники могут использовать его для того, чтобы заставить серверы думать, что подключение поступает от вас. Файлы закрытого ключа эквивалентны паролю и должны быть защищены таким же образом.

Шаг 2. Добавление открытого ключа в Azure DevOps

Свяжите открытый ключ, созданный на предыдущем шаге, с идентификатором пользователя.

Примечание.

Необходимо повторить эту операцию для каждой организации, к которой вы имеете доступ и хотите использовать SSH.

  1. Откройте параметры безопасности, перейдя на веб-портал и выбрав значок рядом с аватаром в правом верхнем углу пользовательского интерфейса. Выберите открытые ключи SSH в появившемся меню.

    Screenshot that shows the SSH public keys menu item and the user avatar selected in Azure DevOps.

  2. Щелкните + Создать ключ.

    Screenshot showing access to Security Configuration in Azure DevOps.

  3. Скопируйте содержимое открытого ключа (например, id_rsa.pub), созданное в поле данных открытого ключа.

    Внимание

    Избегайте добавления пробелов или новых строк в поле "Ключевые данные ", так как они могут привести к тому, что Azure DevOps использует недопустимый открытый ключ. При вставке в ключ в конце часто добавляется новая строка. Не забудьте удалить эту новую линию, если она возникает.

    Screenshot showing configuring a Public Key in Azure DevOps.

  4. Присвойте ключу полезное описание (это описание отображается на странице открытых ключей SSH для профиля), чтобы вы могли запомнить его позже. Нажмите кнопку "Сохранить", чтобы сохранить открытый ключ. После сохранения ключ нельзя изменить. Ключ можно удалить или создать новую запись для другого ключа. Нет ограничений на количество ключей, которые можно добавить в профиль пользователя. Кроме того, обратите внимание, что срок действия ключей SSH, хранящихся в Azure DevOps, истекает через год. Если срок действия ключа истек, вы можете отправить новый ключ или тот же, чтобы продолжить доступ к Azure DevOps через SSH.

  5. На странице обзора заметка отображается в верхней части, содержащей отпечатки пальцев сервера. Запишите их, так как они будут необходимы при первом подключении к Azure DevOps через SSH.

    Screenshot of accessing security configuration in Azure DevOps Services.

  6. Проверьте подключение, выполнив следующую команду:

    ssh -T git@ssh.dev.azure.com
    

    Если это был первый раз при подключении, вы должны получить следующие выходные данные:

    The authenticity of host 'ssh.dev.azure.com (<IP>)' can't be established.
    RSA key fingerprint is SHA256:ohD8VZEXGWo6Ez8GSEJQ9WpafgLFsOfLOtGGQCQo6Og.
    This key is not known by any other names
    Are you sure you want to continue connecting (yes/no/[fingerprint])?
    

    Сравните заданный отпечаток с отпечатками пальцев, предлагаемыми на странице выше упоминание параметров. Продолжайте только в том случае, если они совпадают!

    Если все настроено правильно, выходные данные должны выглядеть следующим образом:

    remote: Shell access is not supported.
    

    Если нет, см. раздел "Вопросы и устранение неполадок".

Шаг 2. Добавление открытого ключа в Azure DevOps

Свяжите открытый ключ, созданный на предыдущем шаге, с идентификатором пользователя.

Примечание.

Необходимо повторить эту операцию для каждой организации, к которой у вас есть доступ и для которой требуется использовать SSH.

  1. Откройте параметры безопасности, перейдя на веб-портал и выбрав аватар в правом верхнем углу пользовательского интерфейса. Выберите "Безопасность " в появившемся меню.

    Screenshot showing User Profile access in Azure DevOps.

  2. Щелкните + Создать ключ.

    Screenshot showing Security Configuration in Azure DevOps.

  3. Скопируйте содержимое открытого ключа (например, id_rsa.pub), созданное в поле данных открытого ключа.

    Примечание.

    С помощью команды $ cat ~/.ssh/id_rsa.pub можно распечатать содержимое файла id_rsa.pub в терминале, а затем скопировать его в буфер обмена. Если файл открытого ключа SSH имеет другое имя или путь, отличный от примера кода, измените имя файла или путь в соответствии с текущей настройкой. При копировании ключа не добавляйте новые строки или пробелы. Кроме того, можно найти скрытую папку SSH, открыть файл в избранном текстовом редакторе и скопировать его в буфер обмена.

    Screenshot showing configuration of a Public Key in Azure DevOps.

    Внимание

    Не добавляйте пробелы или новые строки в поле "Ключевые данные ", так как они могут привести к тому, что Azure DevOps использует недопустимый открытый ключ. При вставке в ключ новая строка часто добавляется в конце. Не забудьте удалить эту новую строку, если она возникает.

  4. Присвойте ключу полезное описание (это описание отображается на странице открытых ключей SSH для профиля), чтобы вы могли запомнить его позже. Нажмите кнопку "Сохранить", чтобы сохранить открытый ключ. После сохранения ключ нельзя изменить. Ключ можно удалить или создать новую запись для другого ключа. Нет ограничений на количество ключей, которые можно добавить в профиль пользователя.

  5. На странице обзора заметка отображается в верхней части, содержащей отпечатки пальцев сервера. Запишите их, так как они будут необходимы при первом подключении к Azure DevOps с помощью SSH.

    Screenshot showing where to locate server fingerprints in Azure DevOps Services.

  6. Проверьте подключение, выполнив следующую команду:

    ssh -T git@ssh.dev.azure.com
    

    Если это был первый раз при подключении, вы должны получить следующие выходные данные:

    The authenticity of host 'ssh.dev.azure.com (<IP>)' can't be established.
    RSA key fingerprint is SHA256:ohD8VZEXGWo6Ez8GSEJQ9WpafgLFsOfLOtGGQCQo6Og.
    This key is not known by any other names
    Are you sure you want to continue connecting (yes/no/[fingerprint])?
    

    Сравните заданный отпечаток с отпечатками пальцев, предлагаемыми на странице выше упоминание параметров. Продолжайте только в том случае, если они совпадают!

    Если все настроено правильно, выходные данные должны выглядеть следующим образом:

    remote: Shell access is not supported.
    

    Если нет, см. раздел "Вопросы и устранение неполадок".

Шаг 3. Клонирование репозитория Git с помощью SSH

Примечание.

Сведения об использовании SSH с репозиторием, ранее клонированного через HTTPS, см. в статье об обновлении удаленных служб на SSH.

  1. Скопируйте URL-адрес клона SSH на веб-портале. В этом примере URL-адрес клона SSH предназначен для репозитория в организации с именем fabrikam-fibre, как указано первой частью URL-адреса после dev.azure.com.

    Screenshot showing Azure Repos SSH cloned URL

    Примечание.

    При использовании Azure DevOps Services формат URL-адреса проекта — dev.azure.com/{your organization}/{your project}это формат. Однако предыдущий формат, ссылающийся на visualstudio.com формат, по-прежнему поддерживается. Дополнительные сведения см. в статье "Знакомство с Azure DevOps" для переключения существующих организаций на использование нового URL-адреса доменного имени.

  2. Выполните git clone в командной строке.

    git clone git@ssh.dev.azure.com:v3/fabrikam-fiber/FabrikamFiber/FabrikamFiber
    

    Теперь необходимо ввести парольную фразу для ключа SSH, прежде чем продолжить работу, если она не управляется агентом SSH:

    Cloning into 'FabrikamFiber'...
    Enter passphrase for key '/c/Users/username/.ssh/id_rsa':
    remote: Azure Repos
    remote: Found 127 objects to send. (50 ms)
    Receiving objects: 100% (127/127), 56.67 KiB | 2.58 MiB/s, done.
    Resolving deltas: 100% (15/15), done.
    

    Если вместо этого вам будет предложено проверить отпечатки пальцев, ознакомьтесь с шагом 2. Добавьте открытый ключ в Azure DevOps еще раз. Другие проблемы см. в разделе " Вопросы и устранение неполадок".

Совет

Чтобы использовать агент SSH для управления ключами SSH, чаще всего используется агент SSH. Настройка агента выходит за рамки область этой статьи, хотя.

Вопросы и устранение неполадок

Ответ. Вы можете увидеть два разных предупреждающих сообщения:

ssh-rsa is about to be deprecated and your request has been throttled. Please use rsa-sha2-256 or rsa-sha2-512 instead. Your session will continue automatically. For more details see https://devblogs.microsoft.com/devops/ssh-rsa-deprecation.

or

You’re using ssh-rsa that is about to be deprecated and your request has been blocked intentionally. Any SSH session using SSH-RSA is subject to brown out (failure during random time periods). Please use rsa-sha2-256 or rsa-sha2-512 instead. For more details see https://devblogs.microsoft.com/devops/ssh-rsa-deprecation.

Возможно, вы ранее изменили конфигурацию SSH для понижения параметров безопасности для Azure DevOps, добавив в ~/.ssh/config файл (%UserProfile%\.ssh\config в Windows):

Host ssh.dev.azure.com vs-ssh.visualstudio.com
  HostkeyAlgorithms +ssh-rsa

Удалите эти строки и убедитесь, что rsa-sha2-256 они rsa-sha2-512 разрешены.

Дополнительные сведения см. в записи блога.

Вопрос. SSH не может установить подключение. Что делать?

Ответ. Существует несколько различных проблем, которые могут возникнуть:

  • Использование неподдерживаемого SSH-RSA

    You’re using ssh-rsa that is unsupported. Please use rsa-sha2-256 or rsa-sha2-512 instead. For more details see https://devblogs.microsoft.com/devops/ssh-rsa-deprecation.
    

    Возможно, вы ранее изменили конфигурацию SSH для понижения параметров безопасности для Azure DevOps, добавив в ~/.ssh/config файл (%UserProfile%\.ssh\config в Windows):

    Host ssh.dev.azure.com vs-ssh.visualstudio.com
       HostkeyAlgorithms +ssh-rsa
    

    Удалите эти строки и убедитесь, что rsa-sha2-256 они rsa-sha2-512 разрешены.

    Дополнительные сведения см. в записи блога.

  • Ключ узла не совпадает

    Это не должно произойти ни в Службе Azure DevOps, ни в более поздних версиях Azure DevOps Server, как упоминание в записи блога.

    Unable to negotiate with <IP> port 22: no matching host key type found. Their offer: ssh-rsa
    

    Измените конфигурацию SSH, чтобы изменить параметры безопасности для Azure DevOps, добавив в ~/.ssh/config файл (%UserProfile%\.ssh\config в Windows):

    Host ssh.dev.azure.com vs-ssh.visualstudio.com
       HostkeyAlgorithms +ssh-rsa
    

    Внимание

    OpenSSH не рекомендует алгоритм подписи открытого ключа в версии 8.2 и отключен по умолчанию в версии 8.8.ssh-rsa

  • Не соответствует MAC

    Unable to negotiate with <IP> port 22: no matching MAC found. Their offer: hmac-sha2-256,hmac-sha2-512
    

    Измените конфигурацию SSH, чтобы изменить параметры безопасности для Azure DevOps, добавив в ~/.ssh/config файл (%UserProfile%\.ssh\config в Windows):

    Host ssh.dev.azure.com vs-ssh.visualstudio.com
       MACs +hmac-sha2-512,+hmac-sha2-256
    
  • Метод обмена ключами не соответствует

    Unable to negotiate with <IP> 22: no matching key exchange method found. Their offer: diffie-hellman-group1-sha1,diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha256
    

    Измените конфигурацию SSH, чтобы изменить параметры безопасности для Azure DevOps, добавив в ~/.ssh/config файл (%UserProfile%\.ssh\config в Windows):

    Host ssh.dev.azure.com vs-ssh.visualstudio.com
       KexAlgorithms +diffie-hellman-group-exchange-sha256,+diffie-hellman-group14-sha1,+diffie-hellman-group1-sha1
    

    Внимание

    Алгоритм diffie-hellman-group1-sha1 обмена ключами по умолчанию отключен в версии 6.9 OpenSSH и diffie-hellman-group14-sha1 версии 8.2.

Совет

Для локально размещенных экземпляров Azure DevOps Server и TFS вместо строки ssh.dev.azure.com vs-ssh.visualstudio.comиспользуйте соответствующее имя Host узла.

Вопрос. Как я могу вспомнить парольную фразу Git для моего ключа?

Ответ. Для этого можно использовать агент SSH. Linux, macOS и Windows (начиная с Windows 10 (сборка 1809) или с помощью Git для Windows с Git Bash) все вставляются с агентом SSH. Агент SSH можно использовать для кэширования ключей SSH для повторного использования. Обратитесь к руководству поставщика SSH, чтобы узнать, как его использовать.

Вопрос. Я использую PuTTY в качестве клиента SSH и создал мои ключи с помощью PuTTYgen. Можно ли использовать эти ключи с Azure DevOps Services?

Ответ. Да. Загрузите закрытый ключ с помощью PuTTYgen, перейдите в меню "Преобразования" и выберите "Экспорт openSSH". Сохраните файл закрытого ключа, а затем выполните действия по настройке ключей, отличных от по умолчанию. Скопируйте открытый ключ непосредственно из окна PuTTYgen и вставьте его в поле "Данные ключа" в параметрах безопасности.

Вопрос. Как проверить, что отправленный открытый ключ совпадает с локальным ключом?

Ответ. С помощью командной строки можно проверить отпечаток открытого ключа, отправленного с помощью следующей ssh-keygen команды, отображаемой в профиле. Если вы не используете значения по умолчанию, необходимо изменить путь и имя файла открытого ключа.

ssh-keygen -l -E md5 -f ~/.ssh/id_rsa.pub

Затем вы можете сравнить сигнатуру MD5 с одной из них в профиле. Это проверка полезно, если у вас возникли проблемы с подключением или возникли проблемы с неправильной вставой открытого ключа в поле "Данные ключей" при добавлении ключа в Azure DevOps.

Вопрос. Как начать использовать SSH в репозитории, где сейчас используется ПРОТОКОЛ HTTPS?

Ответ. Чтобы изменить URL-адрес HTTPS на SSH, необходимо обновить удаленный origin в Git. Получив URL-адрес клонирования SSH, выполните следующую команду:

git remote set-url origin <SSH URL to your repository>

Команды Git, обращающиеся к удаленному вызову origin , теперь будут использовать SSH.

В: Я использую Git LFS с Azure DevOps Services, и при извлечении файлов, отслеживаемых Git LFS, возникают ошибки.

Ответ. Azure DevOps Services в настоящее время не поддерживает LFS по протоколу SSH. Используйте протокол HTTPS для подключения к репозиториям с отслеживаемыми файлами Git LFS.

Вопрос. Как использовать расположение ключа, отличное от по умолчанию, а не ~/.ssh/id_rsa и ~/.ssh/id_rsa.pub?

Ответ. Чтобы использовать ключ, хранящийся в другом месте по умолчанию, выполните следующие две задачи:

  1. Ключи должны находиться в папке, которую можно прочитать или изменить. Если папка имеет более широкие разрешения, SSH не будет использовать ключи.

  2. Необходимо сообщить SSH о расположении ключа, например указав его в качестве удостоверения в конфигурации SSH:

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

Этот IdentitiesOnly yes параметр гарантирует, что SSH не будет использовать другое доступное удостоверение для проверки подлинности. Это особенно важно, если доступно несколько удостоверений.

Вопрос. У меня есть несколько ключей SSH. Разделы справки использовать правильный ключ SSH для Azure DevOps?

Ответ. Как правило, если настроить несколько ключей для клиента SSH и подключиться к серверу SSH, клиент может попробовать ключи по одному за раз, пока сервер не примет один.

Однако это не работает с Azure DevOps по техническим причинам, связанным с протоколом SSH и структурированием URL-адресов SSH Git. Azure DevOps будет слепо принимать первый ключ, который клиент предоставляет во время проверки подлинности. Если этот ключ недопустим для запрошенного репозитория, запрос завершится ошибкой без попытки других доступных ключей из-за следующей ошибки:

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

Для Azure DevOps необходимо настроить SSH для явного использования определенного файла ключа. Процедура аналогична использованию ключа, хранящегося в расположении, отличном от по умолчанию. Просто сообщите SSH использовать правильный ключ SSH для узла Azure DevOps.

Вопрос. Разделы справки использовать разные ключи SSH для разных организаций в Azure DevOps?

Ответ. Azure DevOps будет слепо принимать первый ключ, который клиент предоставляет во время проверки подлинности. Если этот ключ недопустим для запрошенного репозитория, запрос завершится ошибкой следующей ошибки:

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

Однако можно изменить конфигурацию SSH, чтобы различать разные организации и предоставлять разные ключи для каждого. Для этого необходимо использовать псевдонимы узлов для создания отдельных Host разделов в конфигурации SSH. Это связано с тем, что все размещенные URL-адреса Azure DevOps имеют одно и то же имя узла (ssh.dev.azure.com), поэтому SSH по умолчанию не имеет способа отличить их.

# 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.

# 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

После этого вместо использования реальных URL-адресов сообщите Git, что вы хотите использовать эти URL-адреса для каждого репозитория в качестве удаленного, заменив имя узла в существующих удаленных удаленных адресах devops_fabrikam и devops_contoso соответственно. Например git@ssh.dev.azure.com:v3/Fabrikam/Project1/fab_repo , станет git@devops_fabrikam:v3/Fabrikam/Project1/fab_repo.

Вопрос. Какие уведомления можно получать о ключах SSH?

Ответ. Каждый раз, когда вы регистрируете новый ключ SSH в Azure DevOps Services, вы получите уведомление электронной почты о том, что новый ключ SSH добавлен в свою учетную запись.

SSH notification example

Вопрос. Что делать, если я верю, что кто-то, кроме меня, добавляет ключи SSH в свою учетную запись?

Ответ. Если вы получите уведомление о регистрации ключа SSH, и вы не отправили его в службу вручную, ваши учетные данные могут быть скомпрометированы.

Следующим шагом будет изучение того, был ли ваш пароль скомпрометирован. Изменение пароля всегда является хорошим шагом для защиты от этого вектора атаки. Если вы являетесь пользователем Microsoft Entra, обратитесь к администратору, чтобы проверка, если ваша учетная запись использовалась из неизвестного источника или расположения.

Вопрос. Что делать, если мне по-прежнему предлагается пароль и GIT_SSH_COMMAND="ssh -v" git fetch отображается no mutual signature algorithm или corresponding algo not in PubkeyAcceptedAlgorithms?

Ответ. Некоторые дистрибутивы Linux, такие как Fedora Linux, имеют политики шифрования, требующие более сильных алгоритмов подписи SSH, чем Azure DevOps поддерживает (по состоянию на январь 2021 г.). Существует открытый запрос функции для добавления этой поддержки.

Чтобы обойти проблему, добавьте следующий код в конфигурацию SSH (~/.ssh/config):

Host ssh.dev.azure.com vs-ssh.visualstudio.com
  PubkeyAcceptedKeyTypes +ssh-rsa

Совет

Для локально размещенных экземпляров Azure DevOps Server и TFS вместо строки ssh.dev.azure.com vs-ssh.visualstudio.comиспользуйте соответствующее имя Host узла.