InstallSSHKey@0 - SSH 키 v0 작업 설치

파이프라인에서 이 작업을 사용하여 빌드 또는 릴리스 단계 전에 SSH 키를 설치합니다.

Syntax

# Install SSH key v0
# Install an SSH key prior to a build or deployment.
- task: InstallSSHKey@0
  inputs:
    knownHostsEntry: # string. Alias: hostName. Required. Known Hosts Entry. 
    #sshPublicKey: # string. SSH Public Key. 
    #sshPassphrase: # string. SSH Passphrase. 
    sshKeySecureFile: # string. Required. SSH Key. 
  # Advanced
    #addEntryToConfig: false # boolean. Add entry to SSH config. Default: false.
    #configHostAlias: # string. Required when addEntryToConfig = true. Alias. 
    #configHostname: # string. Required when addEntryToConfig = true. Host name. 
    #configUser: # string. Optional. Use when addEntryToConfig = true. User. 
    #configPort: # string. Optional. Use when addEntryToConfig = true. Port.
# Install SSH key v0
# Install an SSH key prior to a build or deployment.
- task: InstallSSHKey@0
  inputs:
    knownHostsEntry: # string. Alias: hostName. Required. Known Hosts Entry. 
    #sshPublicKey: # string. SSH Public Key. 
    #sshPassphrase: # string. SSH Passphrase. 
    sshKeySecureFile: # string. Required. SSH Key.
# Install SSH key v0
# Install an SSH key prior to a build or deployment.
- task: InstallSSHKey@0
  inputs:
    knownHostsEntry: # string. Alias: hostName. Required. Known Hosts Entry. 
    sshPublicKey: # string. Required. SSH Public Key. 
    #sshPassphrase: # string. SSH Passphrase. 
    sshKeySecureFile: # string. Required. SSH Key.
# Install SSH Key v0
# Install an SSH key prior to a build or release.
- task: InstallSSHKey@0
  inputs:
    hostName: # string. Required. Known Hosts Entry. 
    sshPublicKey: # string. Required. SSH Public Key. 
    #sshPassphrase: # string. SSH Passphrase. 
    sshKeySecureFile: # string. Required. SSH Key.

입력

knownHostsEntry - 알려진 호스트 항목
입력 별칭: hostName. string. 필수 요소.

known_hosts 파일의 SSH 키 항목을 지정합니다.


sshPublicKey - SSH 공개 키
string.

(선택 사항) 공용 SSH 키의 내용을 지정합니다.


sshPublicKey - SSH 공개 키
string. 필수 요소.

공용 SSH 키의 내용을 지정합니다.


sshPassphrase - SSH 암호
string.

(선택 사항) SSH 키의 암호를 지정합니다(있는 경우).


sshKeySecureFile - SSH 키
string. 필수 요소.

에이전트에 설치하기 위해 Secure Files 업로드된 SSH 키를 지정합니다.


addEntryToConfig - SSH 구성에 항목 추가
boolean. 기본값은 false입니다.

(선택 사항) SSH 구성 파일에 설치된 키와 관련된 항목을 추가합니다. 키 파일은 모든 후속 작업에 사용할 수 있습니다.


configHostAlias - 별칭
string. 필요한 경우 addEntryToConfig = true입니다.

SSH 구성 항목의 이름을 지정합니다.


configHostname - 호스트 이름
string. 필요한 경우 addEntryToConfig = true입니다.

SSH 구성 항목의 호스트 이름 속성을 지정합니다.


configUser - 사용자
string. (선택 사항) 를 사용하는 경우 addEntryToConfig = true를 사용합니다.

SSH 구성 항목의 사용자 이름 속성을 지정합니다.


configPort - 포트
string. (선택 사항) 를 사용하는 경우 addEntryToConfig = true를 사용합니다.

SSH 구성 항목의 포트를 지정합니다.


hostName - 알려진 호스트 항목
string. 필수 요소.

known_hosts 파일의 SSH 키 항목을 지정합니다.


작업 제어 옵션

모든 작업에는 작업 입력 외에 제어 옵션이 있습니다. 자세한 내용은 컨트롤 옵션 및 일반적인 작업 속성을 참조하세요.

출력 변수

없음

설명

파이프라인에서 이 작업을 사용하여 빌드 또는 릴리스 단계 전에 SSH 키를 설치합니다.

참고

이 작업에는 에이전트의 Windows용 Git Bash가 필요했습니다.

사용법 및 모범 사례

호스트된 풀에 SSH 키를 설치하는 경우 파이프라인의 이후 단계에서 일치하는 공개 키가 이미 있는 원격 시스템에 연결할 수 있습니다. 예를 들어 Git 리포지토리 또는 Azure의 VM에 연결할 수 있습니다.

공개 키를 일반 텍스트로 작업 구성에 전달하지 않는 것이 좋습니다. 대신 파일 내용 mykey.pub에 대한 비밀 변수를 파이프라인에 설정합니다. 그런 다음 파이프라인 정의에서 변수를 로 $(myPubKey)호출합니다. 키의 비밀 부분에 대해 Azure Pipelines의 보안 파일 라이브러리 를 사용합니다.

작업을 만들려면 잘 구성된 SSH 키 설치 작업의 다음 예제를 사용합니다.

steps:
- task: InstallSSHKey@0
  displayName: 'Install an SSH key'
  inputs:
    knownHostsEntry: 'SHA256:1Hyr55tsxGifESBMc0s+2NtutnR/4+LOkVwrOGrIp8U johndoe@contoso'
    sshPublicKey: '$(myPubKey)'
    sshKeySecureFile: 'id_rsa'

참고

공개 키를 리포지토리\조직에 추가해야 합니다. 그렇지 않으면 액세스 문제가 있습니다. GitHub의 경우 위의 가이드를 따릅니다. Azure DevOps Services 경우 Azure DevOps Services/TFS에 공개 키 추가를 사용합니다.

동일한 파이프라인 작업에 여러 SSH 키 설치

동일한 파이프라인 작업에서 둘 이상의 키를 사용하는 경우 첫 번째 키는 기본적으로 사용됩니다. SSH 연결을 설정할 때 원하는 키를 사용하려면 작업의 섹션을 사용하여 Advanced , , configHostnameconfigHostAlias, configUserconfigPort매개 변수addEntryToConfig를 설정할 수 있습니다.InstallSSHKey

이러한 매개 변수를 사용하면 별칭을 통해 사용자 지정 스크립트에서 사용하기 위해 SSH 구성 파일(예 /root/.ssh/config : Linux)에 호스트를 추가할 수 있습니다.

빌드가 완료되면 작업은 원래 SSH 구성 파일을 복원하려고 시도합니다. 처음에 SSH 구성 파일이 없으면 호스트가 에이전트에서 제거됩니다.

여러 SSH 키 설치의 예입니다. 여러 GitHub 리포지토리와 각 리포지토리에 대한 자체 키가 있는 경우:

pool: <Some Agent Pool>

steps:
- task: InstallSSHKey@0
  inputs:
    knownHostsEntry: $(known_host)
    sshPublicKey: $(first_public_key)
    sshKeySecureFile: $(first_private_key)
    addEntryToConfig: true
    configHostAlias: <first-host-alias>
    configHostname: github.com
    configUser: git
  displayName: Install First Repo SSH Key

- task: InstallSSHKey@0
  inputs:
    knownHostsEntry: $(known_host)
    sshPublicKey: $(second_public_key)
    sshKeySecureFile: $(second_private_key)
    addEntryToConfig: true
    configHostAlias: <second-host-alias>
    configHostname: github.com
    configUser: git
  displayName: Install Second Repo SSH Key

- bash: git clone git@<first-host-alias>:<owner>/<first-repo>.git
  displayName: Clone First Repo

- bash: git clone git@<second-host-alias>:<owner>/<second-repo>.git
  displayName: Clone Second Repo

관련 GitHub 문서.

예제

GitHub를 사용하는 예제 설정

이 섹션에서는 Azure Pipelines 내에서 YAML과 함께 프라이빗 GitHub 리포지토리를 사용하는 방법을 설명합니다.

오픈 소스 커뮤니티에 노출하지 않으려는 리포지토리가 있는 경우 일반적인 방법은 리포지토리를 비공개로 만드는 것입니다. 그러나 도구를 사용하여 리포지토리를 관리하려면 Azure DevOps와 같은 CI/CD 도구가 리포지토리에 액세스해야 합니다. Azure DevOps 액세스 권한을 부여하려면 GitHub에 대한 액세스를 인증하기 위해 SSH 키가 필요할 수 있습니다.

다음은 SSH 키를 사용하여 GitHub에 대한 액세스를 인증하는 단계입니다.

  1. GitHub에서 Azure DevOps로의 액세스를 인증하는 데 사용할 키 쌍을 생성합니다.

    1. GitBash에서 다음 명령을 실행합니다.

      ssh-keygen -t rsa
      
    2. SSH 키 쌍의 이름을 입력합니다. 이 예제에서는 myKey를 사용합니다.

      SSH 키 쌍의 이름을 입력하라는 GitBash 프롬프트의 스크린샷

    3. (선택 사항) 암호를 입력하여 프라이빗 키를 암호화할 수 있습니다. 이 단계는 선택 사항입니다. 암호를 사용하지 않는 것보다 암호를 사용하는 것이 더 안전합니다.

      SSH 키 쌍의 암호를 입력하라는 GitBash 프롬프트의 스크린샷

      ssh-keygen 는 SSH 키 쌍을 만들고 다음 성공 메시지가 나타납니다.

      SSH 키 쌍이 생성되었음을 보여 주는 GitBash 메시지의 스크린샷

    4. Windows 파일 탐색기 새로 만든 키 쌍을 확인합니다.

      Windows 파일 탐색기 키 쌍 파일의 스크린샷

  2. GitHub 리포지토리에 공개 키를 추가합니다. 공개 키는 ".pub"로 끝납니다. 이렇게 하려면 브라우저 https://github.com/(organization-name)/(repository-name)/settings/keys에서 URL로 이동합니다.

    1. 배포 키 추가를 선택합니다.

    2. 새 추가 대화 상자에서 제목을 입력한 다음 SSH 키를 복사하여 붙여넣습니다.

      새 추가 대화 상자의 스크린샷

    3. 키 추가를 선택합니다.

  3. Azure DevOps에 프라이빗 키를 업로드합니다.

    1. Azure DevOps의 왼쪽 메뉴에서 파이프라인라이브러리> 선택합니다.

      Azure Pipelines 메뉴의 스크린샷

    2. 보안 파일>+ 보안 파일을 선택합니다.

      파일 보안 메뉴의 스크린샷

    3. 찾아보기를 선택한 다음, 프라이빗 키를 선택합니다.

      파일 업로드 대화 상자 및 찾아보기 단추의 스크린샷

  4. "알려진 호스트 항목"을 복구합니다. GitBash에서 다음 명령을 입력합니다.

    ssh-keyscan github.com
    

    "알려진 호스트 항목"은 GitBash 결과에서 시작 # 되지 않는 표시된 값입니다.

    GitBash의 주요 검색 결과 스크린샷

  5. YAML 파이프라인을 만듭니다.

    YAML 파이프라인을 만들려면 YAML 정의에서 다음 작업을 추가합니다.

    - task: InstallSSHKey@0
     inputs:
       knownHostsEntry: #{Enter your Known Hosts Entry Here}
       sshPublicKey: #{Enter your Public key Here}
       sshKeySecureFile: #{Enter the name of your key in "Secure Files" Here}
    

이제 SSH 키가 설치되었으며 기본 HTTPS가 아닌 SSH를 사용하여 연결할 스크립트를 진행할 수 있습니다.

요구 사항

요구 사항 Description
파이프라인 유형 YAML, 클래식 빌드, 클래식 릴리스
실행 중 에이전트, DeploymentGroup
요청 없음
Capabilities 이 작업은 작업의 후속 작업에 대한 요구를 충족하지 않습니다.
명령 제한 사항 이 작업은 다음 명령 제한을 사용하여 실행됩니다. 제한됨
Settable 변수 이 작업에는 SSH_AGENT_PID, SSH_AUTH_SOCK, INSTALL_SSH_KEY_CONFIG_LOCATION, INSTALL_SSH_KEY_KNOWN_HOSTS_LOCATION 변수를 설정할 수 있는 권한이 있습니다.
에이전트 버전 2.182.1 이상
작업 범주 유틸리티
요구 사항 Description
파이프라인 유형 YAML, 클래식 빌드, 클래식 릴리스
실행 중 에이전트, DeploymentGroup
요청 없음
Capabilities 이 작업은 작업의 후속 작업에 대한 요구를 충족하지 않습니다.
명령 제한 사항 모두
Settable 변수 모두
에이전트 버전 2.117.0 이상
작업 범주 유틸리티