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 클라이언트를 사용합니다. - 웹의 리포지토리를 방문하여 복제를 선택하세요.
- SSH를 선택하고 새 SSH URL을 복사합니다.
- 셸에서 업데이트하려는 리포지토리의 각 원격에 대해
git remote set-url <remote name> <new SSH URL>을 실행합니다. 또는 GUI 클라이언트를 사용하여 원격 URL 업데이트합니다.
필수 조건
| 카테고리 | 요구 사항 |
|---|---|
| 권한 | 리포지토리를 복제하기 위한 액세스 |
| 정책 | SSH 인증 사용 |
| 로컬 도구 | 터미널 또는 셸에서 사용할 수 있는 Git 및 OpenSSH 클라이언트 |
| Windows 환경 | Windows를 사용하는 경우, Git for Windows 또는 git, ssh, ssh-keygen를 사용할 수 있는 다른 환경 |
| 로컬 액세스 | 로컬 .ssh 폴더에 액세스하고 키 파일을 만들 수 있는 권한 |
SSH 키 인증 작동 방식
SSH 공개 키 인증은 생성된 암호화 키의 비대칭 쌍에서 작동합니다. 공개 키를 Azure DevOps 공유하여 초기 SSH 연결을 확인합니다. 시스템에서 프라이빗 키를 안전하고 안전하게 유지합니다.
SSH 키 인증 설정
Azure Repos SSH를 사용하려면 RSA 키 쌍을 생성하고, 공개 키를 Azure DevOps 프로필에 추가하고, 서버 지문을 확인한 다음, SSH URL을 사용하도록 리포지토리를 복제하거나 업데이트합니다.
가장 빠른 경로만 필요한 경우 1단계, 2단계 및 3단계를 순서대로 완료한 다음 명령이 실패하는 경우에만 SSH 인증 문제 해결 을 사용합니다.
다음 단계에서는 명령줄(라고도 함 shell)을 사용하여 다음 플랫폼에서 SSH 키 인증의 구성을 다룹니다.
- 리눅스
- macOS
- Windows 시스템에서 Git for Windows를 실행합니다.
팁
Windows SSH 대신 Git 자격 증명 관리자를 사용합니다.
1단계: SSH 키 만들기
참고
시스템에서 RSA SSH 키를 이미 만든 경우 이 단계를 건너뛰고 2단계로 이동합니다.
이를 확인하려면 홈 디렉터리로 이동한 다음 .ssh 폴더를 살펴보세요(Windows에서는 %UserProfile%\.ssh\, Linux, macOS 및 Git Bash를 사용하는 Windows에서는 ~/.ssh/). 이름이 지정 id_rsa 되고 id_rsa.pub두 개의 파일이 표시되면 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에 대해 조직 전체에서 하나의 키를 사용할 수 있습니다. 다른 ID 또는 계정을 사용하는 경우에만 별도의 키를 추가합니다.
웹 포털로 이동하고 사용자 인터페이스의 오른쪽 위에 있는 아바타 옆에 있는 아이콘을 선택하여 보안 설정을 엽니다. 표시되는 메뉴에서 SSH 공개 키를 선택합니다.
+ 새 키를 선택합니다.
공개 키 데이터 필드에 생성한 공개 키의 내용(예
id_rsa.pub: )을 복사합니다.중요한
키가 유효하지 않게 만들 수 있으므로 키 값 중간에 공백이나 줄 바꿈을 추가하지 마세요. 붙여넣기에서 서식 아티팩트를 추가하는 경우 저장하기 전에 제거합니다.
나중에 기억할 수 있도록 키에 유용한 설명을 제공합니다(이 설명은 프로필의 SSH 공개 키 페이지에 표시됨). 저장을 선택하여 공개 키를 저장합니다. 저장한 후에는 키를 변경할 수 없습니다. 키를 삭제하거나 다른 키에 대한 새 항목을 만들 수 있습니다. 사용자 프로필에 추가할 수 있는 키 수에는 제한이 없습니다.
참고
조직 정책은 SSH 키 만료를 적용할 수 있습니다. 자세한 내용은 조직의 애플리케이션 연결 및 보안 정책 변경을 참조하세요.
SSH 공개 키 개요 페이지에서 서버 지문이 표시됩니다. SSH를 통해 Azure DevOps 처음 연결할 때 사용할 SHA256 지문을 기록해 둡다.
다음 명령을 실행하여 연결을 테스트합니다.
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 지문과 비교합니다. 값이 일치하는 경우에만 계속합니다.
계속하려면 입력
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 사용을 시작하는 방법을 참조하세요.
웹 포털에서 SSH 복제 URL을 복사합니다. 이 예제에서 SSH 복제 URL은 다음 URL의 첫 번째 부분에 표시된 것처럼 fabrikam-fiber
dev.azure.com조직의 리포지토리에 대한 것입니다.
참고
Azure DevOps Services에서는 프로젝트 URL의 형식이
dev.azure.com/{your organization}/{your project}. 그러나visualstudio.com형식을 참조하는 이전 형식은 여전히 지원됩니다. 자세한 내용은 Azure DevOps 소개, 새 도메인 이름 URL을 사용하도록 기존 조직 전환 참조하세요.명령 프롬프트에서 실행
git clone합니다.git clone git@ssh.dev.azure.com:v3/fabrikam-fiber/FabrikamFiber/FabrikamFiberSSH 에이전트를 사용하지 않는 경우 암호를 입력하라는 메시지가 표시됩니다.
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 설치 문제와 일치하는 문제를 찾습니다.
- 키가 만료되었거나 잘못된 경우 만료되었거나 잘못된 키로 시작합니다.
- 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.
일반적인 연결 오류
Q: ssh-rsa 관련 경고가 표시됩니다. 어떻게 해야 합니까?
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/config(Windows %UserProfile%\.ssh\config) 파일에 추가하여 Azure DevOps 대한 보안 설정을 다운그레이드하도록 SSH 구성을 수정한 경우:
Host ssh.dev.azure.com vs-ssh.visualstudio.com
HostkeyAlgorithms +ssh-rsa
지금 이 줄들을 제거하고 rsa-sha2-256 및 rsa-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-256및/또는rsa-sha2-512를 사용합니다.일치하는 호스트 키 없음
이 문제는 Azure DevOps 서비스 또는 blog 게시물 언급된 최신 Azure DevOps Server 버전에서 발생하지 않아야 합니다.
Unable to negotiate with <IP> port 22: no matching host key type found. Their offer: ssh-rsa다음을
~/.ssh/config(Windows%UserProfile%\.ssh\config) 파일에 추가하여 Azure DevOps 대한 보안 설정을 다운그레이드하도록 SSH 구성을 수정합니다.Host ssh.dev.azure.com vs-ssh.visualstudio.com HostkeyAlgorithms +ssh-rsa일반적으로 이전 자체 호스팅 Azure DevOps Server 구성의 경우 레거시 호환성 시나리오에 대해서만 이 해결 방법을 사용합니다. Azure DevOps 서비스의 경우 보안 기본값을 유지하고 영구
ssh-rsa재정의를 방지합니다.일치하는 MAC 없음
Unable to negotiate with <IP> port 22: no matching MAC found. Their offer: hmac-sha2-256,hmac-sha2-512다음을
~/.ssh/config(Windows%UserProfile%\.ssh\config) 파일에 추가하여 Azure DevOps 대한 보안 설정을 다운그레이드하도록 SSH 구성을 수정합니다.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/config(Windows%UserProfile%\.ssh\config) 파일에 추가하여 Azure DevOps 대한 보안 설정을 다운그레이드하도록 SSH 구성을 수정합니다.Host ssh.dev.azure.com vs-ssh.visualstudio.com KexAlgorithms +diffie-hellman-group-exchange-sha256,+diffie-hellman-group14-sha1,+diffie-hellman-group1-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-agentssh-agent 서비스가 실행 중인지 확인하세요. Git Bash 또는 다른 SSH 클라이언트를 사용하는 경우 해당 에이전트를 시작하고 키를 로드하기 위해 해당 클라이언트의 설명서를 참조하세요.
에이전트를 사용하지 않으려는 경우 SSH는 계속 작동할 수 있지만 키 암호를 더 자주 입력하라는 메시지가 표시됩니다.
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 명령을 실행합니다. 기본값을 사용하지 않는 경우 경로 및 공개 키 파일 이름을 변경해야 합니다.
참고
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:origin HTTPS에서 SSH URL로 변경하도록 Git의 원격을 업데이트합니다.
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: 기본값과 다른 위치에 저장된 키를 사용하려면 다음 두 작업을 수행합니다.
키는 사용자만 읽거나 편집할 수 있는 폴더에 있어야 합니다. 폴더에 더 넓은 권한이 있는 경우 SSH는 키를 사용하지 않습니다.
예를 들어 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를 구성해야 합니다. 이 프로시저는 기본이 아닌 위치에 저장된 키를 사용하는 경우와 동일합니다. SSH에 Azure DevOps 호스트에 올바른 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_fabrikam 및 devops_contoso으로 각각 대체하여 각 리포지토리의 원격으로 이러한 URL을 사용하도록 Git에 알리세요. 예를 들어 git@ssh.dev.azure.com:v3/Fabrikam/Project1/fab_repo는 git@devops_fabrikam:v3/Fabrikam/Project1/fab_repo로 변합니다.
알림 및 계정 문제
Q: 내 SSH 키에 대해 어떤 알림을 받을 수 있나요?
A: SSH 키에 대한 몇 가지 알림을 받을 수 있습니다.
조직에 새 SSH 키가 추가되었습니다.
계정과 연결된 SSH 키는 7일 후에 만료되며 인증에 유효하지 않습니다.
계정과 연결된 SSH 키가 만료되어 인증에 더 이상 유효하지 않습니다.
알림 예제
Q: 내 계정에서 다른 사람이 SSH 키를 추가한다고 생각되면 어떻게 해야 하나요?
A: 시작하지 않은 SSH 키 등록 알림을 받으면 자격 증명이 손상될 수 있습니다.
다음 단계는 암호가 손상되었는지 여부를 조사하는 것입니다. 암호 변경은 항상 이 공격 벡터를 방어하는 좋은 첫 번째 단계입니다. Microsoft Entra 사용자인 경우 관리자에게 문의하여 알 수 없는 원본 또는 위치에서 계정이 사용되었는지 확인합니다.
Q: 암호를 GIT_SSH_COMMAND="ssh -v" git fetchno mutual signature algorithmcorresponding 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 구성과 원격 URL에서 ssh.dev.azure.com 대신 서버 호스트 이름을 사용합니다. 이 문서에서 ssh.dev.azure.com 또는 vs-ssh.visualstudio.com가 표시되는 부분은 서버의 호스트 이름으로 대체하십시오.
Q: Azure DevOps Services SSH 키가 작동하지 않은 이유는 무엇인가요?
A: SSH 키 인증을 사용하려면 전체 인증 흐름(웹)을 사용하여 Azure DevOps Services에 정기적으로 로그인해야 합니다. 30일마다 한 번씩 로그인하는 것은 많은 사용자에게 충분하지만 Microsoft Entra 구성에 따라 더 자주 로그인해야 할 수도 있습니다. SSH 키가 작동하지 않으면 먼저 조직에 로그인하고 전체 인증 프롬프트를 완료합니다. SSH 키가 여전히 작동하지 않는 경우 만료되었는지 확인합니다.
팁
자체 호스팅되는 Azure DevOps Server 인스턴스의 경우 Host 줄에서 ssh.dev.azure.com 또는 vs-ssh.visualstudio.com 대신 적절한 호스트 이름을 사용하세요.