다음을 통해 공유


SSH 키 인증 사용

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

macOS, Linux 또는 Windows에서 SSH를 통해 Git 저장소에 연결하여 HTTPS 인증을 사용하여 안전하게 연결할 수 있습니다.

Important

SSH URL이 변경되었지만 이전 SSH URL은 계속 작동합니다. SSH를 이미 설정한 경우 원격 URL 새 형식으로 업데이트합니다.

최신 SSH URL은 .로 ssh.dev.azure.com시작합니다. 이전 URL은 .를 사용합니다 vs-ssh.visualstudio.com.

  • SSH를 사용하는 원격을 확인합니다. 셸에서 실행 git remote -v 하거나 대신 GUI 클라이언트를 사용합니다.
  • 웹의 리포지토리를 방문하여 복제를 선택합니다.
  • SSH를 선택하고 새 SSH URL을 복사합니다.
  • 셸에서 업데이트하려는 리포지토리의 각 원격에 대해 실행됩니다 git remote set-url <remote name> <new SSH URL> . 또는 GUI 클라이언트를 사용하여 원격 URL 업데이트합니다.

SSH 키 인증 작동 방식

SSH 공개 키 인증은 생성된 암호화 키의 비대칭 쌍에서 작동합니다. 공개 키는 Azure DevOps와 공유되며 초기 ssh 연결을 확인하는 데 사용됩니다. 프라이빗 키는 시스템에서 안전하고 안전하게 유지됩니다.

SSH 키 인증 설정

다음 단계에서는 명령줄(라고도 함 shell)을 사용하여 다음 플랫폼에서 SSH 키 인증의 구성을 다룹니다.

참고 항목

Visual Studio 2017을 기준으로 SSH를 사용하여 Azure DevOps Git 리포지토리에 연결할 수 있습니다.

Windows에서는 Git 자격 증명 관리자 또는 개인용 액세스 토큰을 사용하는 것이 좋습니다.

1단계: SSH 키 만들기

참고 항목

시스템에서 RSA SSH 키를 이미 만든 경우 이 단계를 건너뛰고 SSH 키를 구성합니다. 이를 확인하려면 홈 디렉터리로 이동하여 폴더(%UserProfile%\.ssh\Windows 또는 ~/.ssh/ Linux, macOS 및 Git Bash가 있는 Windows)를 살펴봅 .ssh 니다. 이름이 지정 id_rsa 되고 id_rsa.pub 각각 SSH 키 구성을 계속하는 두 개의 파일이 표시되는 경우

키 기반 인증을 사용하려면 먼저 클라이언트에 대해 공개/프라이빗 키 쌍을 생성해야 합니다. ssh-keygen.exe 키 파일을 생성하는 데 사용되며 DSA, RSA, ECDSA 또는 Ed25519 알고리즘을 지정할 수 있습니다. 알고리즘을 지정하지 않으면 Ed25519가 사용됩니다.

참고 항목

Azure DevOps에서 지원하는 유일한 SSH 키 유형은 RSA입니다.

Azure DevOps에서 지원하는 RSA 알고리즘(RSA-SHA2-256 또는 RSA-SHA2-512)을 사용하여 키 파일을 생성하려면 PowerShell 또는 클라이언트와 같은 bash 다른 셸에서 다음 명령 중 하나를 실행합니다.

ssh-keygen -t rsa-sha2-256

또는

ssh-keygen -t rsa-sha2-512

명령의 출력은 다음 출력을 표시해야 합니다(여기서 username 사용자 이름으로 대체됨).

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

Enter 키를 눌러 기본값을 적용하거나 키를 생성할 경로 및/또는 파일 이름을 지정할 수 있습니다. 이 시점에서 암호를 사용하여 프라이빗 키 파일을 암호화하라는 메시지가 표시됩니다. 암호는 비어 있을 수 있지만 권장되지는 않습니다. 암호는 키 파일과 함께 사용되어 2단계 인증을 제공합니다.

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

Important

프라이빗 키의 콘텐츠를 공유하지 마세요. 프라이빗 키가 손상된 경우 공격자는 이를 사용하여 서버가 연결이 사용자로부터 오고 있다고 생각하도록 속일 수 있습니다. 프라이빗 키 파일은 암호와 동일하며 동일한 방식으로 보호되어야 합니다.

2단계: Azure DevOps에 공개 키 추가

이전 단계에서 생성된 공개 키를 사용자 ID와 연결합니다.

참고 항목

액세스 권한이 있고 SSH를 사용하려는 각 조직에 대해 이 작업을 반복해야 합니다.

  1. 웹 포털로 이동하고 사용자 인터페이스의 오른쪽 위에 있는 아바타 옆에 있는 아이콘을 선택하여 보안 설정을 엽니다. 표시되는 메뉴에서 SSH 공개 키를 선택합니다.

    Azure DevOps에서 선택한 SSH 공개 키 메뉴 항목 및 사용자 아바타를 보여 주는 스크린샷

  2. + 새 키를 선택합니다.

    Azure DevOps의 보안 구성에 대한 액세스를 보여 주는 스크린샷

  3. 공개 키 데이터 필드에 생성한 공개 키의 내용(예id_rsa.pub: )을 복사합니다.

    Important

    Azure DevOps에서 잘못된 공개 키를 사용할 수 있으므로 키 데이터 필드에 공백 또는 새 줄을 추가하지 마십시오. 키를 붙여넣을 때 줄 바꿈이 끝에 추가되는 경우가 많습니다. 이 줄이 발생하면 반드시 제거해야 합니다.

    Azure DevOps에서 공개 키 구성을 보여 주는 스크린샷

  4. 나중에 기억할 수 있도록 키에 유용한 설명을 제공합니다(이 설명은 프로필의 SSH 공개 키 페이지에 표시됨). 저장을 선택하여 공개 키를 저장합니다. 저장한 후에는 키를 변경할 수 없습니다. 키를 삭제하거나 다른 키에 대한 새 항목을 만들 수 있습니다. 사용자 프로필에 추가할 수 있는 키 수에는 제한이 없습니다. 또한 Azure DevOps에 저장된 SSH 키는 1년 후에 만료됩니다. 키가 만료되면 새 키 또는 동일한 키를 업로드하여 SSH를 통해 Azure DevOps에 계속 액세스할 수 있습니다.

  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 합니다. 모든 항목이 올바르게 구성된 경우 출력은 다음과 같이 표시됩니다.

    
    If everything is configured correctly the output should look like this:
    
    ```Output
     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를 사용하려면 원격을 SSH로 업데이트하는 방법을 참조하세요.

  1. 웹 포털에서 SSH 복제 URL을 복사합니다. 이 예제에서 SSH 복제 URL은 다음 URLdev.azure.com의 첫 번째 부분에 표시된 것처럼 fabrikam-fiber라는 조직의 리포지토리에 대한 것입니다.

    Azure Repos SSH 복제 URL을 보여 주는 스크린샷

    참고 항목

    Azure DevOps Services를 사용하면 프로젝트 URL의 형식이 dev.azure.com/{your organization}/{your project}됩니다. 그러나 형식을 참조 visualstudio.com 하는 이전 형식은 여전히 지원됩니다. 자세한 내용은 새 도메인 이름 URL을 사용하도록 기존 조직 전환, Azure DevOps 소개를 참조하세요.

  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 키를 관리하는 것이 일반적입니다. 하지만 에이전트 설정은 이 문서의 범위를 벗어납니다.

질문 및 문제 해결

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.

(Windows) 파일에 다음을 추가하여 Azure DevOps에 대한 보안 설정을 다운그레이드하도록 SSH 구성을 ~/.ssh/config%UserProfile%\.ssh\config 수정한 경우:

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

이제 이러한 줄을 제거하고 허용되는지 확인 rsa-sha2-256 rsa-sha2-512 합니다.

자세한 내용은 블로그 게시물을 참조하세요.

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.
    

    (Windows) 파일에 다음을 추가하여 Azure DevOps에 대한 보안 설정을 다운그레이드하도록 SSH 구성을 ~/.ssh/config%UserProfile%\.ssh\config 수정한 경우:

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

    이제 이러한 줄을 제거하고 허용되는지 확인 rsa-sha2-256 rsa-sha2-512 합니다.

    자세한 내용은 블로그 게시물을 참조하세요.

  • 일치하는 호스트 키 없음

    이 문제는 블로그 게시물에 언급된 대로 Azure DevOps Service 또는 최신 Azure DevOps Server 버전에서 발생하지 않아야 합니다.

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

    (Windows) 파일에 다음을 추가하여 Azure DevOps에 대한 보안 설정을 다운그레이드하도록 SSH 구성을 ~/.ssh/config%UserProfile%\.ssh\config 수정합니다.

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

    Important

    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
    

    (Windows) 파일에 다음을 추가하여 Azure DevOps에 대한 보안 설정을 다운그레이드하도록 SSH 구성을 ~/.ssh/config%UserProfile%\.ssh\config 수정합니다.

    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
    

    (Windows) 파일에 다음을 추가하여 Azure DevOps에 대한 보안 설정을 다운그레이드하도록 SSH 구성을 ~/.ssh/config%UserProfile%\.ssh\config 수정합니다.

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

    Important

    키 교환 알고리즘 diffie-hellman-group1-sha1 은 OpenSSH 버전 6.9diffie-hellman-group14-sha1 버전 8.2에서 기본적으로 사용하지 않도록 설정되었습니다.

Azure DevOps Server 및 TFS의 자체 호스팅 인스턴스의 경우 줄에서 ssh.dev.azure.com vs-ssh.visualstudio.com적절한 호스트 이름을 Host 대신 사용합니다.

Q: Git에서 키의 암호를 기억하려면 어떻게 해야 하나요?

A: SSH 에이전트를 사용할 수 있습니다. Linux, macOS 및 Windows( Windows 10(빌드 1809부터) 또는 Git Bash가 있는 Windows용 Git 사용)은 모두 SSH 에이전트와 함께 제공됩니다. SSH 에이전트를 사용하여 SSH 키를 캐시하여 반복적으로 사용할 수 있습니다. 사용 방법에 대한 자세한 내용은 SSH 공급업체 설명서를 참조하세요.

Q: PuTTY를 SSH 클라이언트로 사용하고 PuTTYgen을 사용하여 키를 생성했습니다. Azure DevOps Services에서 이러한 키를 사용할 수 있나요?

A: 예. PuTTYgen을 사용하여 프라이빗 키를 로드하고, 변환 메뉴로 이동하고, OpenSSH 키 내보내기를 선택합니다. 프라이빗 키 파일을 저장한 다음 단계에 따라 기본 키가 아닌 키를 설정합니다. PuTTYgen 창에서 직접 공개 키를 복사하고 보안 설정의 키 데이터 필드에 붙여넣습니다.

Q: 업로드한 공개 키가 내 로컬 키와 동일한 키인지 확인하려면 어떻게 해야 하나요?

A: 명령줄을 사용하여 공개 키에 대해 다음 ssh-keygen 명령을 실행하여 프로필에 표시된 공개 키와 함께 업로드된 공개 키의 지문을 확인할 수 있습니다. 기본값을 사용하지 않는 경우 경로 및 공개 키 파일 이름을 변경해야 합니다.

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

그런 다음 MD5 서명을 프로필의 서명과 비교할 수 있습니다. 이 검사는 연결 문제가 있거나 Azure DevOps에 키를 추가할 때 공개 키를 키 데이터 필드에 잘못 붙여넣는 것에 대한 우려가 있는 경우에 유용합니다.

Q: 현재 HTTPS를 사용하는 리포지토리에서 SSH를 사용하려면 어떻게 해야 하나요?

A: HTTPS에서 SSH URL로 변경하려면 Git에서 원격을 업데이트 origin 해야 합니다. SSH 복제 URL있으면 다음 명령을 실행합니다.

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

호출 origin 된 원격에 액세스하는 Git 명령은 SSH를 사용합니다.

Q: Azure DevOps Services와 함께 Git LFS를 사용하고 있는데 Git LFS에서 추적하는 파일을 가져올 때 오류가 발생합니다.

A: Azure DevOps Services는 현재 SSH를 통해 LFS를 지원하지 않습니다. HTTPS를 사용하여 Git LFS 추적 파일이 있는 저장소에 연결합니다.

Q: 기본이 아닌 키 위치( ~/.ssh/id_rsa 및 ~/.ssh/id_rsa.pub 아님)를 어떻게 사용할 수 있나요?

A: 기본값과 다른 위치에 저장된 키를 사용하려면 다음 두 작업을 수행합니다.

  1. 키는 사용자만 읽거나 편집할 수 있는 폴더에 있어야 합니다. 폴더에 더 넓은 권한이 있는 경우 SSH는 키를 사용하지 않습니다.

  2. 예를 들어 SSH 구성에서 "ID"로 지정하여 SSH에 키의 위치를 알려야 합니다.

    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에서 기본적으로 이러한 URL을 구분할 수 없기 때문입니다. 그러나 각각에 대해 고유한 키를 제공하여 서로 다른 조직을 구분하도록 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을 사용하는 대신 기존 원격의 호스트 이름을 각각과 함께 대체하여 각 리포지토리에 대해 이러한 URL을 원격으로 사용하려는 경우 Git에 알릴 수 있습니다 devops_fabrikam devops_contoso . 예를 들어 git@ssh.dev.azure.com:v3/Fabrikam/Project1/fab_repogit@devops_fabrikam:v3/Fabrikam/Project1/fab_repo가 됩니다.

Q: 내 SSH 키에 대해 어떤 알림을 받을 수 있나요?

A: Azure DevOps Services에 새 SSH 키를 등록할 때마다 새 SSH 키가 계정에 추가될 때 알려주는 이메일 알림을 받게 됩니다.

SSH 알림 예제

Q: 내 계정에서 다른 사람이 SSH 키를 추가한다고 생각되면 어떻게 해야 하나요?

A: 시작하지 않은 SSH 키 등록 알림을 받으면 자격 증명이 손상될 수 있습니다.

다음 단계는 암호가 손상되었는지 여부를 조사하는 것입니다. 암호 변경은 항상 이 공격 벡터를 방어하는 좋은 첫 번째 단계입니다. Microsoft Entra 사용자인 경우 관리자에게 문의하여 알 수 없는 원본/위치에서 계정이 사용되었는지 확인합니다.

Q: 암호를 GIT_SSH_COMMAND="ssh -v" git fetch no mutual signature algorithm corresponding algo not in PubkeyAcceptedAlgorithms입력하라는 메시지가 계속 표시되면 어떻게 해야 하나요?

A: Fedora Linux와 같은 일부 Linux 배포판에는 Azure DevOps가 지원하는 것보다 더 강력한 SSH 서명 알고리즘이 필요한 암호화 정책이 있습니다(2021년 1월 현재). 이 지원을 추가하기 위한 열린 기능 요청 이 있습니다.

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 대신 사용합니다.