SSH キー認証を使用するUse SSH key authentication

Azure DevOps Services |Azure DevOps Server 2020 |Azure DevOps Server 2019 |TFS 2018-TFS 2015Azure DevOps Services | Azure DevOps Server 2020 | Azure DevOps Server 2019 | TFS 2018 - TFS 2015

MacOS、Linux、または Windows の SSH を介して Git リポジトリに接続し、HTTPS 認証を使用して安全に接続します。Connect to your Git repos through SSH on macOS, Linux, or Windows to securely connect using HTTPS authentication. Windows では、 Git Credential Manager コア または 個人用アクセストークンを使用することをお勧めします。On Windows, we recommended the use of Git Credential Manager Core or Personal Access Tokens.

重要

SSH Url は変更されましたが、古い SSH Url は引き続き機能します。SSH URLs have changed, but old SSH URLs will continue to work. 既に SSH を設定している場合は、リモート Url を新しい形式に更新する必要があります。If you have already set up SSH, you should update your remote URLs to the new format:

  • Git クライアントでを実行して、SSH を使用しているリモートを確認し git remote -v ます。Verify which remotes are using SSH by running git remote -v in your Git client.
  • Web 上のリポジトリにアクセスし、右上にある [ 複製 ] ボタンを選択します。Visit your repository on the web and select the Clone button in the upper right.
  • [ Ssh ] を選択し、新しい ssh URL をコピーします。Select SSH and copy the new SSH URL.
  • Git クライアントで、を実行 git remote set-url <remote name, e.g. origin> <new SSH URL> します。In your Git client, run: git remote set-url <remote name, e.g. origin> <new SSH URL>. または、Visual Studio で、[ リポジトリの設定] にアクセスして、リモートを編集します。Alternatively, in Visual Studio, go to Repository Settings, and edit your remotes.

注意

Visual Studio 2017 では、SSH を使用して Azure DevOps Git リポジトリに接続できます。As of Visual Studio 2017, SSH can be used to connect to Azure DevOps Git repos.

SSH キー認証のしくみHow SSH key authentication works

SSH 公開キー認証は、生成された暗号化キーの非対称ペアで動作します。SSH public key authentication works with an asymmetric pair of generated encryption keys. 公開 キーは Azure DevOps と共有され、最初の ssh 接続を検証するために使用されます。The public key is shared with Azure DevOps and used to verify the initial ssh connection. 秘密 キーは、システム上で安全かつ安全に維持されます。The private key is kept safe and secure on your system.

SSH キー認証の設定Set up SSH key authentication

次の手順では、次のプラットフォームでの SSH キー認証の構成について説明します。The following steps cover configuration of SSH key authentication on the following platforms:


  • LinuxLinux
  • macOS が少なくとも Leopard (10.5) で実行されているmacOS running at least Leopard (10.5)
  • Git For windows を実行している windows システムWindows systems running Git for Windows

コマンドラインを使用して SSH を構成します。Configure SSH using the command line. bash Linux と macOS の共通シェルであり、Git for Windows のインストールでは、[スタート] メニューに Git Bash へのショートカットが追加されます。bash is the common shell on Linux and macOS and the Git for Windows installation adds a shortcut to Git Bash in the Start menu. その他のシェル環境は機能しますが、この記事では説明しません。Other shell environments will work, but are not covered in this article.

手順 1: SSH キーを作成するStep 1: Create your SSH keys

注意

既にシステムに SSH キーを作成している場合は、この手順をスキップして ssh キーの構成に進みます。If you have already created SSH keys on your system, skip this step and go to configuring SSH keys.

ここに示すコマンドを使用すると、新しい既定の SSH キーを作成し、既存の既定のキーを上書きすることができます。The commands here will let you create new default SSH keys, overwriting existing default keys. 続行する前に、 ~/.ssh フォルダー (たとえば、/home/jamal/.ssh または C:\Users\jamal \ ) を確認し、次のファイルを探します。Before continuing, check your ~/.ssh folder (for example, /home/jamal/.ssh or C:\Users\jamal\.ssh) and look for the following files:

  • id_rsaid_rsa
  • id_rsa pubid_rsa.pub

これらのファイルが存在する場合は、既に SSH キーが作成されています。If these files exist, then you have already created SSH keys. 次のコマンドを使用してキーを上書きするか、この手順をスキップして、これらのキーを再利用するための SSH キーの構成 に進むことができます。You can overwrite the keys with the following commands, or skip this step and go to configuring SSH keys to reuse these keys.

プロンプトからコマンドを使用して、SSH キーを作成し ssh-keygen bash ます。Create your SSH keys with the ssh-keygen command from the bash prompt. このコマンドは、SSH で使用する2048ビット RSA キーを作成します。This command will create a 2048-bit RSA key for use with SSH. 秘密キーのパスフレーズは、 — このパスフレーズによって秘密キーの別のセキュリティ層が提供されることを確認するメッセージが表示されたときに指定できます。You can give a passphrase for your private key when prompted—this passphrase provides another layer of security for your private key. パスフレーズを指定する場合は、接続するたびに入力する必要がないように、 SSH エージェントが パスフレーズをキャッシュするように構成してください。If you give a passphrase, be sure to configure the SSH agent to cache your passphrase so you don't have to enter it every time you connect.

$ ssh-keygen -C "jamal@fabrikam.com"
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/jamal/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /c/Users/jamal/.ssh/id_rsa.
Your public key has been saved in /c/Users/jamal/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:******************************************* jamal@fabrikam.com
The key's randomart image is:
+---[RSA 2048]----+
|+.   +yX*o .     |
|... ..E+*=o      |
|  ..o.=E=.o      |
|   . * =.o .     |
|    . S o o..    |
|       + .oo     |
|        S+.  .   |
|        ..+.+    |
|          o*..   |
+----[SHA256]-----+

このコマンドを実行すると、SSH 認証に必要な2つのキー (秘密キー ( id_rsa ) と公開キー ( id_rsa ) が生成されます。This command produces the two keys needed for SSH authentication: your private key ( id_rsa ) and the public key ( id_rsa.pub ). 秘密キーの内容を共有しないことが重要です。It is important to never share the contents of your private key. 秘密キーが侵害された場合、攻撃者はそれを使用してサーバーに接続していると考えることができます。If the private key is compromised, attackers can use it to trick servers into thinking the connection is coming from you.

手順 2: Azure DevOps Services/TFS に公開キーを追加するStep 2: Add the public key to Azure DevOps Services/TFS

前の手順で生成された公開キーをユーザー ID に関連付けます。Associate the public key generated in the previous step with your user ID.

  1. Web ポータルを参照し、ユーザーインターフェイスの右上にあるアバターを選択して、セキュリティ設定を開きます。Open your security settings by browsing to the web portal and selecting your avatar in the upper right of the user interface. 表示されるメニューで [ SSH 公開キー ] を選択します。Select SSH public keys in the menu that appears.

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

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

    Azure DevOps Services でのセキュリティ構成へのアクセス

  3. 生成した公開キー (たとえば、id_rsa) の内容を 公開キーのデータ フィールドにコピーします。Copy the contents of the public key (for example, id_rsa.pub) that you generated into the Public Key Data field.

    重要

    キーデータ フィールドに空白または新しい行を追加することは避けてください。 Azure DevOps Services によって無効な公開キーが使用される可能性があります。Avoid adding whitespace or new lines into the Key Data field, as they can cause Azure DevOps Services to use an invalid public key. キーに貼り付けるときは、多くの場合、末尾に改行が追加されます。When pasting in the key, a newline often is added at the end. この改行が発生した場合は、必ず削除してください。Be sure to remove this newline if it occurs.

    Azure DevOps Services での公開キーの構成

  4. キーにわかりやすい説明を付けます (この説明はプロファイルの [ SSH 公開キー ] ページに表示されます)。そのため、後で覚えておくことができます。Give the key a useful description (this description will be displayed on the SSH public keys page for your profile) so that you can remember it later. [ 保存 ] を選択して、公開キーを格納します。Select Save to store the public key. 保存した後は、キーを変更することはできません。Once saved, you cannot change the key. キーを削除するか、別のキーの新しいエントリを作成することができます。You can delete the key or create a new entry for another key. ユーザープロファイルに追加できるキーの数に制限はありません。There are no restrictions on how many keys you can add to your user profile. また、Azure DevOps に格納されている SSH キーは、5年後に期限切れになることにも注意してください。Also note that SSH keys stored in Azure DevOps expire after five years. キーの有効期限が切れた場合は、新しいキーまたは同じものをアップロードして、引き続き Azure DevOps 経由で SSH 経由でアクセスできるようにすることができます。If your key expires, you may upload a new key or the same one to continue accessing Azure DevOps via SSH.

  5. 次のコマンドを実行して、接続を ssh -T git@ssh.dev.azure.com テストします。Test the connection by running the following command: ssh -T git@ssh.dev.azure.com. すべてが正常に動作していれば、応答が返されます。これについては、「」を参照してください。 remote: Shell access is not supported. If everything is working correctly, you'll receive a response which says: remote: Shell access is not supported. If not, see the section on Questions and troubleshooting.

手順 2: Azure DevOps に公開キーを追加するStep 2: Add the public key to Azure DevOps

前の手順で生成された公開キーをユーザー ID に関連付けます。Associate the public key generated in the previous step with your user ID.

  1. Web ポータルを参照し、ユーザーインターフェイスの右上にあるアバターを選択して、セキュリティ設定を開きます。Open your security settings by browsing to the web portal and selecting your avatar in the upper right of the user interface. 表示されるメニューで [ セキュリティ ] を選択します。Select Security in the menu that appears.

    Azure DevOps Services でのユーザープロファイルへのアクセス

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

    Azure DevOps Services でのセキュリティ構成へのアクセス

  3. 生成した公開キー (たとえば、id_rsa) の内容を 公開キーのデータ フィールドにコピーします。Copy the contents of the public key (for example, id_rsa.pub) that you generated into the Public Key Data field.

    重要

    キーデータ フィールドに空白または新しい行を追加することは避けてください。 Azure DevOps Services によって無効な公開キーが使用される可能性があります。Avoid adding whitespace or new lines into the Key Data field, as they can cause Azure DevOps Services to use an invalid public key. キーに貼り付けるときは、多くの場合、末尾に改行が追加されます。When pasting in the key, a newline often is added at the end. この改行が発生した場合は、必ず削除してください。Be sure to remove this newline if it occurs.

    Azure DevOps Services での公開キーの構成

  4. キーにわかりやすい説明を付けます (この説明はプロファイルの [ SSH 公開キー ] ページに表示されます)。そのため、後で覚えておくことができます。Give the key a useful description (this description will be displayed on the SSH public keys page for your profile) so that you can remember it later. [ 保存 ] を選択して、公開キーを格納します。Select Save to store the public key. 保存した後は、キーを変更することはできません。Once saved, you cannot change the key. キーを削除するか、別のキーの新しいエントリを作成することができます。You can delete the key or create a new entry for another key. ユーザープロファイルに追加できるキーの数に制限はありません。There are no restrictions on how many keys you can add to your user profile.

  5. 次のコマンドを実行して、接続を ssh -T git@ssh.dev.azure.com テストします。Test the connection by running the following command: ssh -T git@ssh.dev.azure.com. すべてが正常に動作していれば、応答が返されます。これについては、「」を参照してください。 remote: Shell access is not supported. If everything is working correctly, you'll receive a response which says: remote: Shell access is not supported. If not, see the section on Questions and troubleshooting.

手順 3: SSH を使用して Git リポジトリを複製するStep 3: Clone the Git repository with SSH

注意

既存の複製されたリポジトリから SSH で接続するには、「 リモートを ssh に更新する」を参照してください。To connect with SSH from an existing cloned repo, see updating your remotes to SSH.

  1. Web ポータルから SSH 複製 URL をコピーします。Copy the SSH clone URL from the web portal. この例では、SSL クローン URL は、の後の URL の最初の部分で示されているように、 fabrikam-fiber という名前の組織内のリポジトリ用です dev.azure.comIn this example, the SSL clone URL is for a repo in an organization named fabrikam-fiber, as indicated by the first part of the URL after dev.azure.com.

    SSH クローン URL の Azure Repos

    注意

    Azure DevOps Services のリリースでプロジェクトの Url が変更され、現在の形式になってい dev.azure.com/{your organization}/{your project} ますが、既存の形式を使用することもでき visualstudio.com ます。Project URLs have changed with the release of Azure DevOps Services and now have the format dev.azure.com/{your organization}/{your project}, but you can still use the existing visualstudio.com format. 詳細については、「 Visual Studio Team Services が Azure DevOps Services である」を参照してください。For more information, see Visual Studio Team Services is now Azure DevOps Services.

  2. コマンド プロンプトで git clone を実行します。Run git clone from the command prompt.

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

SSH では、サーバーの SSH フィンガープリントが表示され、確認を求めるメッセージが表示される場合があります。SSH may display the server's SSH fingerprint and ask you to verify it. 表示されているフィンガープリントが [ SSH 公開キー ] ページのいずれかの指紋に一致していることを確認する必要があります。You should verify that the displayed fingerprint matches one of the fingerprints in the SSH public keys page.

SSH は、不明なホストに接続するときにこのフィンガープリントを表示して、中間者攻撃から保護します。SSH displays this fingerprint when it connects to an unknown host to protect you from man-in-the-middle attacks. ホストのフィンガープリントを受け入れると、フィンガープリントが変更されない限り、SSH によって再度メッセージが表示されることはありません。Once you accept the host's fingerprint, SSH will not prompt you again unless the fingerprint changes.

$ git clone git@ssh.dev.azure.com:v3/fabrikam-fiber/FabrikamFiber/FabrikamFiber
Cloning into 'FabrikamFiber'...
The authenticity of host 'ssh.dev.azure.com (65.52.8.37)' can't be established.
RSA key fingerprint is SHA256:********************************************
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'ssh.dev.azure.com,65.52.8.37' (RSA) to the list of known hosts.
Enter passphrase for key '/c/Users/jamal/.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.

接続を続行するかどうかを確認するメッセージが表示されたら、「yes」と入力します。When you are asked if you want to continue connecting, type yes. Git は、リポジトリを複製し、 origin 今後の Git コマンドのために SSH と接続するようにリモートを設定します。Git will clone the repo and set up the origin remote to connect with SSH for future Git commands.

ヒント

問題を回避するには、Windows ユーザーは コマンドを実行 して、GIT で SSH キーのパスフレーズを再利用できるようにする必要があります。To prevent problems, Windows users should run a command to have Git reuse their SSH key passphrase.

質問とトラブルシューティングQuestions and troubleshooting

Q: 実行後 git clone 、次のエラーが表示されます。Q: After running git clone, I get the following error.   どうすればいいですか。What should I do?

Host key verification failed. 
fatal: Could not read from remote repository.

A: 次を実行して、SSH キーを手動で記録します。 ssh-keyscan -t rsa domain.com >> ~/.ssh/known_hostsA: Manually record the SSH key by running: ssh-keyscan -t rsa domain.com >> ~/.ssh/known_hosts

Q: Windows でのキーのパスフレーズを Git に保存するにはどうすればよいですか。Q: How can I have Git remember the passphrase for my key on Windows?

A:ssh-agentPowerShell または Windows コマンドプロンプトでプロセスを開始するには、Git For Windows に含まれている次のコマンドを実行します。A: Run the following command included in Git for Windows to start up the ssh-agent process in PowerShell or the Windows Command Prompt. ssh-agent では、リポジトリに接続するたびにパスフレーズを指定する必要がないように、パスフレーズがキャッシュされます。ssh-agent will cache your passphrase so you don't have to provide it every time you connect to your repo.

start-ssh-agent.cmd

Bash シェル (Git Bash を含む) を使用している場合は、次のようにして ssh-agent を起動します。If you're using the Bash shell (including Git Bash), start ssh-agent with:

eval `ssh-agent`

Q: PuTTY を SSH クライアントとして使用し、PuTTYgen でキーを生成しました。Q: I use PuTTY as my SSH client and generated my keys with PuTTYgen. これらのキーを Azure DevOps Services で使用できますか。Can I use these keys with Azure DevOps Services?

A: はい。A: Yes. PuTTYgen で秘密キーを読み込み、[ 変換 ] メニューにアクセスして、[ OpenSSH キーのエクスポート] を選択します。Load the private key with PuTTYgen, go to Conversions menu and select Export OpenSSH key. 秘密キーファイルを保存し、手順に従って 既定以外のキーを設定します。Save the private key file and then follow the steps to set up non-default keys. [PuTTYgen] ウィンドウから公開キーを直接コピーし、セキュリティ設定の [ キーデータ ] フィールドに貼り付けます。Copy your public key directly from the PuTTYgen window and paste into the Key Data field in your security settings.

Q: アップロードした公開キーがローカルにあるのと同じキーであることを確認するにはどうすればよいですか。Q: How can I verify that the public key I uploaded is the same key as I have locally?

A: 次のコマンドを使用して、公開キーに対してアップロードされた公開キーのフィンガープリントを、 ssh-keygen コマンドラインを使用して確認でき bash ます。A: You can verify the fingerprint of the public key uploaded with the one displayed in your profile through the following ssh-keygen command run against your public key using the bash command line. 既定値を使用していない場合は、パスと公開キーのファイル名を変更する必要があります。You will need to change the path and the public key filename if you are not using the defaults.

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

その後、MD5 署名をプロファイル内のものと比較できます。You can then compare the MD5 signature to the one in your profile. このチェックは、Azure DevOps Services にキーを追加するときに、接続の問題が発生した場合や、キーの データ フィールドに公開キーを正しく貼り付けられない場合に役立ちます。This check is useful if you have connection problems or have concerns about incorrectly pasting in the public key into the Key Data field when adding the key to Azure DevOps Services.

Q: 現在 HTTPS を使用しているリポジトリで SSH の使用を開始するにはどうすればよいですか。Q: How can I start using SSH in a repository where I am currently using HTTPS?

A:originHTTPS から SSH URL に変更するには、Git でリモートを更新する必要があります。A: You'll need to update the origin remote in Git to change over from a HTTPS to SSH URL. SSH クローン URLを取得したら、次のコマンドを実行します。Once you have the SSH clone URL, run the following command:

git remote set-url origin git@ssh.dev.azure.com:v3/fabrikam-fiber/FabrikamFiber/FabrikamFiber

に接続する任意の Git コマンドを実行できるようになりました originYou can now run any Git command that connects to origin.

Q: Azure DevOps Services で Git LFS を使用していますが、Git LFS で追跡されているファイルをプルするときにエラーが発生します。Q: I'm using Git LFS with Azure DevOps Services and I get errors when pulling files tracked by Git LFS.

A: Azure DevOps Services は、現在 SSH 経由の LFS をサポートしていません。A: Azure DevOps Services currently doesn't support LFS over SSH. Git LFS で追跡されたファイルを使用してリポジトリに接続するには、HTTPS を使用します。Use HTTPS to connect to repos with Git LFS tracked files.

Q: 既定以外のキーの場所を使用するにはどうすればよいですか。つまり、~/.ssh/id_rsa と ~/.ssh/id_rsa は使用できませんか。Q: How can I use a non-default key location, i.e. not ~/.ssh/id_rsa and ~/.ssh/id_rsa.pub?

A: 既定とは異なる場所にで作成されたキーを使用するには ssh-keygen 、次の2つのタスクを実行します。A: To use keys created with ssh-keygen in a different place than the default, perform these two tasks:

  1. キーは、読み取りまたは編集が可能なフォルダー内にある必要があります。The keys must be in a folder that only you can read or edit. フォルダーのアクセス許可が広くなっている場合、SSH はキーを使用しません。If the folder has wider permissions, SSH will not use the keys.
  2. キーの場所を SSH で認識させる必要があります。You must let SSH know the location of the keys. コマンドを使用して SSH でキーを認識させ ssh-add 、秘密キーへの完全なパスを指定します。You make SSH aware of keys through the ssh-add command, providing the full path to the private key.
ssh-add /home/jamal/.ssh/id_jamal.rsa

Windows では、を実行する前に ssh-add 、Git For Windows に含まれている次のコマンドを実行する必要があります。On Windows, before running ssh-add, you will need to run the following command from included in Git for Windows:

start-ssh-agent.cmd

このコマンドは、PowerShell とコマンドプロンプトの両方で実行されます。This command runs in both PowerShell and the Command Prompt. Git Bash を使用している場合は、次のコマンドを使用する必要があります。If you are using Git Bash, the command you need to use is:

eval `ssh-agent`

ssh-addGit For windows ディストリビューションの一部として検索し、windows 上の任意のシェル環境でも実行できます。You can find ssh-add as part of the Git for Windows distribution and also run it in any shell environment on Windows.

MacOS および Linux では、を実行する前にを実行しておく必要があり ssh-agent ssh-add ますが、これらのプラットフォームのコマンド環境は通常、自動的に開始さ ssh-agent れます。On macOS and Linux you also must have ssh-agent running before running ssh-add, but the command environment on these platforms usually takes care of starting ssh-agent for you.

Q: 複数の SSH キーがあります。Q: I have multiple SSH keys. SSH サーバーまたはリポジトリによって異なる SSH キーを使用する操作方法How do I use different SSH keys for different SSH servers or repos?

A: 一般に、SSH クライアントに対して複数のキーを構成し、SSH サーバーに接続する場合、クライアントは、サーバーが1つのキーを受け入れるまで、一度に1つずつキーを試すことができます。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.

ただし、SSH プロトコルに関連する技術的な理由と、Git SSH Url の構成方法については、Azure DevOps では機能しません。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 は、クライアントが認証時に提供する最初のキーを無条件で受け入れます。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.

Azure DevOps の場合は、特定のキーファイルを明示的に使用するように SSH を構成する必要があります。For Azure DevOps, you'll need to configure SSH to explicitly use a specific key file. これを実行してファイルを編集する方法の1つ (やなど) を次に示し ~/.ssh/config /home/jamal/.ssh C:\Users\jamal\.ssh ます。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 *
# 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.

# Say your on-premises Azure DevOps Server instance has SSH URLs like this:
#   ssh://someHost:22/someCollection/some_project/_git/some_repo
# Add the following Host section:
Host someHost
  IdentityFile ~/.ssh/your_private_key
  IdentitiesOnly yes

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

Q: "一致するキー交換メソッドが見つかりませんでした" というエラーを修正操作方法ます。Q: How do I fix errors that mention "no matching key exchange method found"?

A: Git for Windows 2.25.1 は新しいバージョンの OpenSSH に付属しています。既定では、一部のキー交換プロトコルが削除されています。A: Git for Windows 2.25.1 shipped with a new version of OpenSSH which removed some key exchange protocols by default. 具体的に diffie-hellman-group14-sha1 は、は、一部の Azure DevOps Server と TFS の顧客にとって問題として識別されています。Specifically, diffie-hellman-group14-sha1 has been identified as problematic for some Azure DevOps Server and TFS customers. 次のものを SSH 構成 () に追加することで、この問題を回避でき ~/.ssh/config ます。You can work around the problem by adding the following to your SSH configuration (~/.ssh/config):

Host <your-azure-devops-host>
    KexAlgorithms +diffie-hellman-group14-sha1

<your-azure-devops-host>を Azure DevOps または TFS サーバーのホスト名 (など) に置き換え tfs.mycompany.com ます。Replace <your-azure-devops-host> with the hostname of your Azure DevOps or TFS server, like tfs.mycompany.com.

Q: SSH キーに関してどのような通知を受け取ることができますか。Q: What notifications may I receive about my SSH keys?

A: Azure DevOps Services に新しい SSH キーを登録するたびに、アカウントに新しい SSH キーが追加されたことを知らせる電子メール通知が送信されます。A: Whenever you register a new SSH Key with Azure DevOps Services, you will receive an email notification informing you that a new SSH key has been added to your account.

SSH 通知の例

Q: 自分以外のユーザーが自分のアカウントに SSH キーを追加していると思われる場合はどうすればよいですか。Q: What do I do if I believe that someone other than me is adding SSH keys on my account?

A: SSH キーが登録されていることを知らせる通知を受け取っても、手動でサービスにアップロードしていない場合は、資格情報が侵害された可能性があります。A: If you receive a notification of an SSH key being registered and you did not manually upload it to the service, your credentials may have been compromised.

次の手順では、パスワードが侵害されたかどうかを調査します。The next step would be to investigate whether or not your password has been compromised. パスワードの変更は、この攻撃ベクトルに対して防御するための最初の手順として常に適しています。Changing your password is always a good first step to defend against this attack vector. Azure Active Directory ユーザーの場合は、管理者に問い合わせて、不明なソース/場所からアカウントが使用されたかどうかを確認してください。If you’re an Azure Active Directory user, talk with your administrator to check if your account was used from an unknown source/location.

Q: パスワードの入力を求められても表示されている場合はどうすればよい GIT_SSH_COMMAND="ssh -v" git fetch no mutual signature algorithm ですか。Q: What do I do if I'm still prompted for my password and GIT_SSH_COMMAND="ssh -v" git fetch shows no mutual signature algorithm?

A: Fedora Linux など、一部の Linux ディストリビューションには、Azure DevOps がサポートするよりも強力な SSH 署名アルゴリズムを必要とする暗号化ポリシーがあります (2021 年1月)。A: Some Linux distributions, such as Fedora Linux, have crypto policies that require stronger SSH signature algorithms than Azure DevOps supports (as of January 2021). このサポートを追加するためのオープンな 機能要求 があります。There's an open feature request to add this support.

この問題を回避するには、SSH 構成 () に次のコードを追加し ~/.ssh/config ます。You can work around the issue by adding the following code to your SSH configuration (~/.ssh/config):

Host ssh.dev.azure.com
  PubkeyAcceptedKeyTypes=ssh-rsa

ssh.dev.azure.comAzure DevOps Server を使用する場合は、を正しいホスト名に置き換えます。Replace ssh.dev.azure.com with the correct host name if you use Azure DevOps Server.