SSH キー認証を使用する

Azure DevOps サービス |Azure DevOps Server |Azure DevOps Server 2022

macOS、Linux、またはWindowsで SSH を使用して、Azure DevOpsの git リポジトリAzure Repos安全に認証します。

この記事では、RSA キー ペアを作成し、プロファイルに公開キーを追加し、SSH を使用してリポジトリを複製する方法について説明します。

重要

SSH URL は変更されましたが、古い SSH URL は引き続き機能します。 SSH を既に設定している場合は、リモート URL を新しい形式に更新します。

最新の SSH URL は、 ssh.dev.azure.comで始まります。 前の URL では vs-ssh.visualstudio.com が使用されています。

  • SSH を使用するリモートを確認します。 シェルで git remote -v を実行するか、GUI クライアントを使用します。
  • Web 上のリポジトリにアクセスして、クローンを選択します。
  • [SSH] を選択し、新しい SSH URL をコピーします。
  • シェルで、更新するリポジトリの各リモートに対して git remote set-url <remote name> <new SSH URL> を実行します。 別の方法として、GUI クライアントを使用してリモート URL を更新します。

[前提条件]

カテゴリ Requirements
アクセス許可 リポジトリを複製するためのアクセス
ポリシー SSH 認証が有効
ローカル ツール Git と、ターミナルまたはシェルから使用できる OpenSSH クライアント
Windows環境 Windows を使用している場合は、Git for Windows または gitssh、および ssh-keygen を利用できる別の環境を使用します
ローカル アクセス ローカル .ssh フォルダーへのアクセスと、キー ファイルを作成するためのアクセス許可

SSH キー認証のしくみ

SSH 公開キー認証は、生成された暗号化キーの非対称ペアと連携して動作します。 公開キーをAzure DevOpsと共有して、最初の SSH 接続を確認します。 お使いのシステム上で 秘密鍵 を安全に保管してください。

SSH キー認証を設定する

Azure Reposで SSH を使用するには、RSA キー ペアを生成し、Azure DevOps プロファイルに公開キーを追加し、サーバーのフィンガープリントを確認してから、SSH URL を使用するようにリポジトリを複製または更新します。

最速のパスのみが必要な場合は、手順 1、手順 2、および手順 3 を順番に実行し、コマンドが失敗した場合にのみ SSH 認証のトラブルシューティング を使用します。

次の手順では、コマンド ライン ( shell とも呼ばれます) を使用した、次のプラットフォームでの SSH キー認証の構成について説明します。

ヒント

Windowsで、SSH ではなく Git Credential Manager を使用します。

手順 1: SSH キーを作成する

注釈

システムに RSA SSH キーを既に作成している場合は、この手順をスキップして手順 2 に進みます。 これを確認するには、ホーム ディレクトリに移動し、.ssh フォルダーを探します (Windows または Linux、macOS、Git Bash でのWindowsで%UserProfile%\.ssh\~/.ssh/)。 id_rsaid_rsa.pubという名前の 2 つのファイルが表示される場合は、手順 2 に進みます。

キーベースの認証を使用するには、まずクライアントの公開キーと秘密キーのペアを生成する必要があります。 OpenSSH では複数のキーの種類を生成できますが、Azure DevOpsでは SSH 認証用の RSA キーがサポートされます。

注釈

Azure DevOpsは RSA キーをサポートし、認証時に RSA-SHA2 署名アルゴリズムを使用します。 RSA キーを生成し、SSH クライアントが接続時にサポートされている RSA-SHA2 署名をネゴシエートできるようにします。

Azure DevOpsの RSA キー ペアを生成するには、PowerShell またはクライアントでbashなどの別のシェルから次のコマンドを実行します。

ssh-keygen -t rsa -b 3072

コマンドからの出力には、次の出力が表示されます ( username はユーザー名です)。

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

Enter キーを押して既定値をそのまま使用するか、キーを生成するパスやファイル名を指定します。 この時点で、秘密キー ファイルを暗号化するためにパスフレーズを使用するように求められます。 パスフレーズは空にできますが、お勧めしません。 ファイルが公開されている場合、パスフレーズによって秘密キーの保護レイヤーが追加されます。

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]-----+

これで、指定した場所に公開/秘密 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に追加する

前の手順で生成した公開キーをユーザー ID に関連付けます。

注釈

SSH 公開キーは、ユーザー プロファイルに関連付けられています。 ほとんどの場合、同じ ID に対して複数の組織で 1 つのキーを使用できます。 別の ID またはアカウントを使用する場合にのみ、別のキーを追加します。

  1. Web ポータルを参照し、ユーザー インターフェイスの右上にあるアバターの横にあるアイコンを選択して、セキュリティ設定を開きます。 表示されるメニューで [SSH 公開キー] を選択します。

    SSH 公開キーのメニュー項目と、Azure DevOps で選択されたユーザー アバターを示すスクリーンショット

  2. [+ 新しいキー] を選択します。

    Azure DevOps のセキュリティ構成へのアクセスを示すスクリーンショット

  3. 生成した公開キー (id_rsa.pub など) の内容を [公開キー データ] フィールドにコピーします。

    重要

    キーが無効になる可能性があるため、キー値の途中に余分なスペースや改行を追加しないでください。 貼り付けによって書式設定成果物が追加された場合は、保存する前に削除してください。

    Azure DevOps で公開キーを構成する画面のスクリーンショットを表示。

  4. 後で思い出すことができるように、キーに有用な説明 (この説明はプロファイルの [SSH 公開キー] ページに表示されます) を入力します。 [保存] を選択して公開キーを格納します。 保存すると、キーを変更することはできません。 キーを削除するか、別のキーの新しいエントリを作成することはできます。 ユーザー プロファイルに追加できるキーの数に制限はありません。

    注釈

    組織ポリシーでは、SSH キーの有効期限を適用できます。 詳細については、「組織のアプリケーション接続とセキュリティ ポリシーを変更する」を参照してください。

  5. [SSH 公開キー]概要ページに、サーバーのフィンガープリントが表示されます。 SSH 経由でAzure DevOpsに初めて接続するときに使用する SHA256 フィンガープリントを書き留めておきます。

    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])?
    

    そのフィンガープリントを、 SSH 公開キー ページに表示されている SHA256 フィンガープリントと比較します。 値が一致する場合にのみ続行します。

  7. yes」と入力して続行します。 すべてが構成されていれば、出力は次のようになります。

     Warning: Permanently added 'ssh.dev.azure.com' (RSA) to the list of known hosts.
     remote: Shell access is not supported.
     shell request failed on channel 0
    

    そうでない場合は、「質問とトラブルシューティング」のセクションを参照してください。

手順 3: SSH を使用して Git リポジトリを複製する

注釈

以前に HTTPS を使用して複製したリポジトリで SSH を使用するには、「現在 HTTPS を使用しているリポジトリで SSH の使用を開始する方法」を参照してください。

  1. Web ポータルから SSH クローン URL をコピーします。 この例では、SSH 複製 URL は、URL の の後の最初の部分で示されているとおり、fabrikam-fiberdev.azure.com という名前の組織のリポジトリ用です。

    Azure Repos の SSH クローン URL を示すスクリーンショット。

    注釈

    Azure DevOps Services では、プロジェクト URL の形式は dev.azure.com/{your organization}/{your project} です。 ただし、visualstudio.com 形式を参照する以前の形式は引き続きサポートされています。 詳細については、「introducing Azure DevOps、新しいドメイン名 URL を使用するように既存の組織を切り替えるを参照してください。

  2. コマンド プロンプトで git clone を実行します。

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

    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 キーを管理します。 エージェントの設定は、この記事の範囲外です。

AI を使用して SSH 認証リポジトリを操作する

GitHub Copilotまたは Azure DevOps MCP Server で Git リポジトリを使用する場合は、自然言語プロンプトを使用して SSH セットアップを検証し、認証の問題を診断できます。

Task プロンプトの例
リポジトリが使用しているリモートを確認する Check whether this repository uses SSH or HTTPS for origin, and show me how to switch it to SSH if needed.
SSH セットアップを確認する Review my Git remote configuration and explain whether it matches the Azure Repos SSH format.
認証エラーを診断する Help me troubleshoot this Azure Repos SSH error: remote: Public key authentication failed.
SSH で使用されているキーを確認する Explain how to tell which SSH key my client is offering to ssh.dev.azure.com and what to change if it is the wrong one.

ヒント

Visual Studio Codeでは、エージェント モードは、リモートの確認、SSH 構成の確認、ターミナル出力からの次のトラブルシューティング手順の提案に役立ちます。

トラブルシューティングと一般的な質問

次のセクションを使用して、SSH セットアップの問題と一致する問題を見つけます。

期限切れまたは無効なキー

Q: SSH キーの有効期限が切れています。 どうすればよいですか。

A: 前の手順に従って、 新しい SSH キーを作成してアップロードします

別のオプションとして、Project コレクション管理者は、SSH キーの有効期限を検証するポリシーを無効にすることができます。 既定では、SSH キーの有効期限の検証ポリシーが有効になっています。 詳細については、「 SSH キー ポリシー」を参照してください。

キーの有効期限が切れる 7 日前に通知が自動的に送信されます。 これらの通知と共に、次のメッセージングが表示されます。

remote: Authentication failed: your SSH key has expired. To restore access, visit https://aka.ms/ado-ssh-public-key-expired for guidance.
remote: Public key authentication failed.
fatal:  Could not read from remote repository.

一般的な接続エラー

A: 次のいずれかの警告メッセージが表示されることがあります。

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.

または

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 (Windows の %UserProfile%\.ssh\config) ファイルに以下を追加します。

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

ここでこれらの行を削除し、 rsa-sha2-256rsa-sha2-512 が許可されていることを確認します。

詳細については、ブログ記事を参照してください。

この修復は、非推奨の ssh-rsa 警告とサポートされていない ssh-rsa エラーの標準的な修正です。 これらのシナリオの最初の手順として使用します。

Q: SSH で接続を確立できません。 どうすればよいですか。

A: いくつかの異なる問題が発生する可能性があります。

  • サポートされていない 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-rsa警告に関する前の質問で説明したのと同じ修復を適用します。HostkeyAlgorithms +ssh-rsaのオーバーライドを削除し、rsa-sha2-256rsa-sha2-512を使用します。

  • 一致するホストキーがない

    この問題は、blog post で説明されているように、Azure DevOps サービスまたはより新しいAzure DevOps Serverバージョンでは発生しません。

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

    ssh 構成を変更して、Windows の ~/.ssh/config (%UserProfile%\.ssh\config) ファイルに次のコードを追加して、Azure DevOpsのセキュリティ設定をダウングレードします。

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

    この回避策は、従来の互換性シナリオ (通常は古いセルフホステッド Azure DevOps Server構成の場合) にのみ使用します。 Azure DevOps サービスの場合は、セキュリティで保護された既定値を維持し、永続的なssh-rsaオーバーライドを回避します。

    重要

    OpenSSH は ssh-rsa 公開キー署名アルゴリズムを、バージョン 8.2 で非推奨にし、バージョン 8.8 で既定で無効にしました。

  • 一致するMACがない

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

    ssh 構成を変更して、Windows の ~/.ssh/config (%UserProfile%\.ssh\config) ファイルに次のコードを追加して、Azure DevOpsのセキュリティ設定をダウングレードします。

    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 構成を変更して、Windows の ~/.ssh/config (%UserProfile%\.ssh\config) ファイルに次のコードを追加して、Azure DevOpsのセキュリティ設定をダウングレードします。

    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では既定で無効になっています。

ヒント

Azure DevOps Serverのセルフホステッド インスタンスの場合は、Hostまたはssh.dev.azure.comではなく、vs-ssh.visualstudio.com行で適切なホスト名を使用します。

SSH エージェントとパスフレーズの問題

Q: SSH エージェントが実行されていないか、キーが読み込まれていません。 どうすればよいですか。

A: キーが存在するが、SSH が毎回パスフレーズの入力を求めるメッセージを表示する場合、またはキーが正常に作成された後に複製が失敗した場合は、SSH エージェントが実行されているかどうか、およびキーが読み込まれているかどうかを確認します。

次のコマンドを使用して、エージェントが現在読み込んでいる ID を確認します。

ssh-add -l

エージェントに ID がないことを示す出力がある場合は、エージェントに秘密キーを追加します。

ssh-add ~/.ssh/id_rsa

Windows、組み込みの OpenSSH エージェントで PowerShell を使用している場合は、キーを追加する前に、ssh-agent サービスが実行されていることを確認します。 Git Bash または別の SSH クライアントを使用する場合は、エージェントの起動とキーの読み込みについて、そのクライアントのドキュメントを参照してください。

エージェントを使用しない場合でも SSH は機能しますが、キー パスフレーズの入力を求められる頻度が高くなります。

Q: キーのパスフレーズを Git に記憶させるにはどうすればよいですか?

A: SSH エージェントを使用します。 Linux、macOS、およびWindows(Windows 10(ビルド1809)以降、またはGit Bashを使用するGit for Windows)には、すべてSSHエージェントが搭載されています。 SSH エージェントは、繰り返し使用するために SSH キーをキャッシュできます。 使用方法の詳細については、SSH ベンダーのマニュアルを参照してください。

Q: SSH クライアントとして PuTTY を使用し、PuTTYgen でキーを生成しました。 Azure DevOps サービスでこれらのキーを使用できますか?

A: はい。 PuTTYgen で秘密キーを読み込み、[Conversions] メニューに移動して、[Export OpenSSH key]を選択します。 秘密キー ファイルを保存し、既定以外のキーの場所の使用に関するこの記事の後の質問に従います。 [PuTTYgen] ウィンドウから公開キーを直接コピーし、セキュリティ設定の [キー データ] フィールドに貼り付けます。

Q: アップロードした公開キーがローカル キーと同じキーであることを検証するにはどうすればよいですか?

A: アップロードした公開キーのフィンガープリントを、プロファイルに表示されたものと比較して確認します。 コマンド ラインを使用して、公開キーに対して次の ssh-keygen コマンドを実行します。 既定値を使用していない場合は、パスと公開キーのファイル名を変更する必要があります。

注釈

SHA-256 フィンガープリントを優先します。 MD5 は、従来の指紋形式と比較する必要がある場合にのみ使用します。

ssh-keygen -l -E md5 -f <path_to_your_public_key>
ssh-keygen -l -E sha256 -f <path_to_your_public_key>

次に、署名をプロファイル内の署名と比較します。 このチェックは、接続に問題がある場合や、キーをAzure DevOpsに追加するときに公開キーを [キー データ] フィールドに誤って貼り付ける場合に役立ちます。

Q: 現在 HTTPS を使用しているリポジトリで SSH の使用を開始するにはどうすればよいですか?

A: HTTPS から SSH URL に変更するように、Git の origin リモートを更新します。 SSH クローン URL を取得したら、次のコマンドを実行します。

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

リモートにアクセスする Git コマンド origin SSH を使用します。

複数のキーと組織の管理

Q: Azure DevOps Services で Git LFS を使用しています。Git LFS によって追跡されたファイルをプルするとエラーが発生します。

A: Azure DevOps サービスは現在、SSH 経由の LFS をサポートしていません。 Git LFS によって追跡されたファイルがあるリポジトリに接続する際は HTTPS を使用してください。

Q: ~/.ssh/id_rsa や ~/.ssh/id_rsa.pub ではなく、既定以外のキーの場所を使用するにはどうすればよいですか?

A: 既定とは異なる場所に保存されたキーを使用するには、次の 2 つのタスクを実行します。

  1. キーは、あなたのみが読み取りや編集を実行できるフォルダー内に配置する必要があります。 これより広範囲のアクセス許可がフォルダーに設定されていると、キーが SSH で使用されません。

  2. SSH にキーの場所を知らせる必要があります。たとえば、SSH 構成でキーを "Identity" として指定する場合は以下のようになります。

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

IdentitiesOnly yes を設定することにより、SSH では認証に他の利用可能な ID が使用されなくなります。 この設定は、複数の ID を使用できる場合に特に重要です。

Q: 複数の SSH キーがあります。 Azure DevOpsに正しい SSH キーを使用するにはどうすればよいですか?

A: SSH クライアントに対して複数のキーが構成されている場合は通常、クライアントは SSH サーバーがいずれかのキーを受け入れるまで、各キーで順番に認証を試みます。

ただし、この方法は、SSH プロトコルと Git SSH URL の構造に関連する技術的な制約のため、Azure DevOpsでは機能しません。 Azure DevOpsは、認証時にクライアントによって提供される最初のキーを受け入れます。 要求されたリポジトリに対してこのキーが無効である場合、他の利用可能なキーを試行せずに要求は失敗となり、次のようなエラーが発生します。

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

Azure DevOpsでは、特定のキー ファイルを明示的に使用するように SSH を構成する必要があります。 プロシージャは、既定以外の場所に格納されているキーを使用する場合と同じです。 Azure DevOps ホストに適切な SSH キーを使用するように SSH に指示します。

Q: Azure DevOps上の組織ごとに異なる SSH キーを使用するにはどうすればよいですか?

A: Azure DevOpsは、認証時にクライアントが提供する最初のキーを受け入れます。 要求されたリポジトリに対してそのキーが無効であれば、次のようなエラーで要求が失敗となります。

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

このエラーは、すべてのAzure DevOps URL が同じホスト名 (ssh.dev.azure.com) を共有するため、SSH で既定で区別できないために発生します。 ただし、SSH 設定を変更して、組織ごとに別々のキーを提供することで、異なる組織を区別することができます。 ホストのエイリアスを使用して、SSH 設定ファイル内に個別の Host セクションを作成します。

# 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 を使用する代わりに、既存のリモートのホスト名をそれぞれ devops_fabrikamdevops_contoso に置き換えて、各リポジトリにこれらの URL をリモートとして使用するように Git に指示します。 たとえば、git@ssh.dev.azure.com:v3/Fabrikam/Project1/fab_repogit@devops_fabrikam:v3/Fabrikam/Project1/fab_repoになります。

通知とアカウントの問題

Q: SSH キーに関してどのような通知を受け取ることがありますか?

A: SSH キーに関するいくつかの通知を受け取る場合があります。

  • 新しい SSH キーが組織に追加されました。

  • アカウントに関連付けられている SSH キーの有効期限は 7 日間であり、認証には無効です。

  • アカウントに関連付けられている SSH キーの有効期限が切れ、認証に対して有効ではなくなりました。

    通知の例

    SSH キーの電子メール通知を示すスクリーンショット。

Q: 自分以外のユーザーが自分のアカウントに SSH キーを追加していると思われる場合はどうすればよいですか?

A: 開始しなかった SSH キー登録通知を受け取った場合、資格情報が侵害される可能性があります。

次の手順では、パスワードが侵害されたかどうかを調査します。 パスワードを変更することは、この攻撃ベクトルに対する防衛として、常に適切な最初のステップです。 Microsoft Entraユーザーの場合は、管理者に問い合わせて、不明なソースまたは場所からアカウントが使用されたかどうかを確認してください。

Q: まだパスワードの入力を求められ、GIT_SSH_COMMAND="ssh -v" git fetchno mutual signature algorithm または corresponding algo not in PubkeyAcceptedAlgorithms が表示される場合はどうすればよいですか?

A:Fedora Linux などの一部の Linux ディストリビューションでは、現在の Azure DevOps SSH 構成で許可されているよりも強力な SSH 署名アルゴリズムを必要とする暗号化ポリシーが適用されます。

この問題を回避するには、SSH 構成に次のコードを追加します (~/.ssh/config)。

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

OpenSSH バージョンで以前の設定名のみがサポートされている場合は、代わりに PubkeyAcceptedKeyTypes を使用してください。

このコードは、一時的な互換性の回避策として使用します。 可能であれば、SSH クライアントまたはサーバー構成をアップグレードし、テスト後にこのオーバーライドを削除します。

一般的な質問

Q: Azure DevOps Serverで SSH を使用できますか。

A: はい。 セルフホステッド Azure DevOps Server インスタンスの場合は、ssh.dev.azure.comではなく、SSH 構成とリモート URL でサーバーホスト名を使用します。 この記事で ssh.dev.azure.com または vs-ssh.visualstudio.comを示す場合は、サーバーのホスト名に置き換えます。

Q: Azure DevOps Services SSH キーが機能しなくなったのはなぜですか?

A:SSH キー認証では、完全な認証フロー (Web) を使用して、Azure DevOps サービスに定期的にサインインする必要があります。 多くのユーザーには 30 日に 1 回サインインするだけで十分ですが、Microsoft Entra構成によっては、より頻繁にサインインする必要がある場合があります。 SSH キーが機能しなくなった場合は、まず組織にサインインし、完全な認証プロンプトを完了してみてください。 SSH キーが引き続き機能しない場合は、有効期限が切れているかどうかを確認します。

ヒント

Azure DevOps Serverのセルフホステッド インスタンスの場合は、Hostまたはssh.dev.azure.comではなく、vs-ssh.visualstudio.com行で適切なホスト名を使用します。