Udostępnij za pośrednictwem


InstallSSHKey@0 — instalowanie zadania V0 klucza SSH

To zadanie w potoku służy do instalowania klucza SSH przed wykonaniem kroku kompilacji lub wydania.

Składnia

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

Dane wejściowe

knownHostsEntry - znanych hostów
Alias wejściowy: hostName. string. To jest wymagane.

Określa wpis klucza SSH dla pliku known_hosts.


sshPublicKey - klucza publicznego SSH
string.

Opcjonalny. Określa zawartość publicznego klucza SSH.


sshPassphrase - hasła SSH
string.

Opcjonalny. Określa hasło dla klucza SSH, jeśli istnieje.


sshKeySecureFile - klucza SSH
string. To jest wymagane.

Określa klucz SSH przekazany do Secure Files do zainstalowania na agencie.


addEntryToConfig - Dodaj wpis do konfiguracji SSH
boolean. Wartość domyślna: false.

Opcjonalny. Dodaje wpis powiązany z kluczem zainstalowanym w pliku konfiguracji SSH. Plik klucza będzie dostępny dla wszystkich kolejnych zadań.


configHostAlias - alias
string. Wymagane, gdy addEntryToConfig = true.

Określa nazwę wpisu konfiguracji SSH.


configHostname - nazwa hosta
string. Wymagane, gdy addEntryToConfig = true.

Określa właściwość nazwy hosta wpisu konfiguracji SSH.


configUser - użytkownika
string. Opcjonalny. Użyj polecenia , gdy addEntryToConfig = true.

Określa właściwość nazwy użytkownika wpisu konfiguracji SSH.


configPort - Port
string. Opcjonalny. Użyj polecenia , gdy addEntryToConfig = true.

Określa port wpisu konfiguracji SSH.


Opcje sterowania zadaniami

Wszystkie zadania mają opcje sterowania oprócz danych wejściowych zadań podrzędnych. Aby uzyskać więcej informacji, zobacz opcje kontroli i typowe właściwości zadań.

Zmienne wyjściowe

Żaden.

Uwagi

To zadanie w potoku służy do instalowania klucza SSH przed wykonaniem kroku kompilacji lub wydania.

Uwaga

To zadanie wymaga powłoki Git Bash dla systemu Windows w agencie.

Użycie i najlepsze rozwiązania

Jeśli zainstalujesz klucz SSH w pulach hostowanych , w kolejnych krokach potoku możesz nawiązać połączenie z systemem zdalnym, w którym już istnieje pasujący klucz publiczny. Możesz na przykład nawiązać połączenie z repozytorium Git lub z maszyną wirtualną na platformie Azure.

Zalecamy, aby klucz publiczny nie był przekazywany jako zwykły tekst do konfiguracji zadania. Zamiast tego ustawić zmienną wpisu tajnego w potoku dla zawartości pliku mykey.pub. Następnie wywołaj zmienną w definicji potoku jako $(myPubKey). W przypadku części klucza tajnego użyj biblioteki Secure File w usłudze Azure Pipelines.

Aby utworzyć zadanie, użyj następującego przykładu dobrze skonfigurowanego zadania Zainstaluj klucz SSH:

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

Uwaga

Klucz publiczny należy dodać do repozytorium\organizacji; w przeciwnym razie będą występować problemy z dostępem. W przypadku usługi GitHub wykonaj powyższego przewodnika. W przypadku usług Azure DevOps Services użyj Dodaj klucz publiczny do usług Azure DevOps Services/TFS.

Instalowanie wielu kluczy SSH w tym samym zadaniu potoku

W przypadku używania więcej niż jednego klucza w tym samym zadaniu potoku pierwszy jest używany domyślnie. Aby móc użyć żądanego klucza podczas nawiązywania połączenia SSH, możesz użyć sekcji Advanced zadania InstallSSHKey, aby ustawić następujące parametry: addEntryToConfig, configHostAlias, configHostname, configUseri configPort.

Te parametry umożliwiają dodanie hosta do pliku konfiguracji SSH (na przykład /root/.ssh/config dla systemu Linux) w celu użycia go w skryptach niestandardowych za pośrednictwem aliasu.

Po zakończeniu kompilacji zadanie podejmie próbę przywrócenia oryginalnego pliku konfiguracji SSH. Jeśli początkowo nie było pliku konfiguracji SSH, host zostanie usunięty z agenta.

Przykład instalacji wielu kluczy SSH. Przypadek z kilkoma repozytoriami GitHub i ich własnym kluczem dla każdego z nich:

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

related GitHub docs.

Przykłady

Przykładowa konfiguracja przy użyciu usługi GitHub

W tej sekcji opisano sposób używania prywatnego repozytorium GitHub z językiem YAML z poziomu usługi Azure Pipelines.

Jeśli masz repozytorium, którego nie chcesz ujawniać społeczności typu open source, typowym rozwiązaniem jest utworzenie prywatnego repozytorium. Jednak narzędzie ciągłej integracji/ciągłego wdrażania, takie jak Azure DevOps, wymaga dostępu do repozytorium, jeśli chcesz użyć narzędzia do zarządzania repozytorium. Aby udzielić dostępu do usługi Azure DevOps, może być potrzebny klucz SSH do uwierzytelniania dostępu do usługi GitHub.

Poniżej przedstawiono procedurę używania klucza SSH do uwierzytelniania dostępu do usługi GitHub:

  1. Wygeneruj parę kluczy do użycia do uwierzytelniania dostępu z usługi GitHub do usługi Azure DevOps:

    1. W powłoce GitBash uruchom następujące polecenie:

      ssh-keygen -t rsa
      
    2. Wprowadź nazwę pary kluczy SSH. W naszym przykładzie używamy myKey.

      Zrzut ekranu przedstawiający monit usługi GitBash o wprowadzenie nazwy pary kluczy SSH.

    3. (Opcjonalnie) Możesz wprowadzić hasło, aby zaszyfrować klucz prywatny. Ten krok jest opcjonalny. Użycie hasła jest bezpieczniejsze niż nie jest używane.

      Zrzut ekranu przedstawiający monit usługi GitBash o wprowadzenie hasła dla pary kluczy SSH.

      ssh-keygen tworzy pary kluczy SSH, a zostanie wyświetlony następujący komunikat o powodzeniu:

      Zrzut ekranu przedstawiający komunikat GitBash pokazujący, że utworzono parę kluczy SSH.

    4. W Eksploratorze plików systemu Windows sprawdź nowo utworzoną parę kluczy:

      Zrzut ekranu przedstawiający pliki par kluczy w Eksploratorze plików systemu Windows.

  2. Dodaj klucz publiczny do repozytorium GitHub. (Klucz publiczny kończy się na ".pub"). W tym celu przejdź do następującego adresu URL w przeglądarce: https://github.com/(organization-name)/(repository-name)/settings/keys.

    1. Wybierz pozycję Dodaj klucz wdrażania.

    2. W oknie dialogowym Dodawanie nowego wprowadź tytuł, a następnie skopiuj i wklej klucz SSH:

      Zrzut ekranu przedstawiający okno dialogowe Dodawanie nowego.

    3. Wybierz pozycję Dodaj klucz.

  3. Przekaż klucz prywatny do usługi Azure DevOps:

    1. W usłudze Azure DevOps w menu po lewej stronie wybierz pozycję Pipelines>Library.

      zrzut ekranu przedstawiający menu usługi Azure Pipelines.

    2. Wybierz pozycję Secure files>+ Secure file:

      zrzut ekranu przedstawiający menu Bezpieczne pliki.

    3. Wybierz pozycję Przeglądaj, a następnie wybierz klucz prywatny:

      Zrzut ekranu przedstawiający okno dialogowe Przekazywanie pliku i przycisk Przeglądaj.

  4. Odzyskaj wpis "Znane hosty". W powłoce GitBash wprowadź następujące polecenie:

    ssh-keyscan github.com
    

    "Znany wpis hostów" to wyświetlana wartość, która nie rozpoczyna się od # w wynikach powłoki GitBash:

    Zrzut ekranu przedstawiający kluczowe wyniki wyszukiwania w powłoce GitBash.

  5. Utwórz potok YAML.

    Aby utworzyć potok YAML, w definicji YAML dodaj następujące zadanie:

    - 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}
    

Klucze SSH są teraz zainstalowane i można przejść do skryptu, aby nawiązać połączenie przy użyciu protokołu SSH, a nie domyślnego protokołu HTTPS.

Wymagania

Wymaganie Opis
Typy potoków YAML, klasyczna kompilacja, wersja klasyczna
Działa na Agent, DeploymentGroup
Wymagania Żaden
możliwości To zadanie nie spełnia żadnych wymagań dotyczących kolejnych zadań w zadaniu.
ograniczenia poleceń To zadanie jest uruchamiane przy użyciu następujących ograniczeń poleceń : ograniczone
zmienne ustawiane To zadanie ma uprawnienia do ustawiania następujących zmiennych: SSH_AGENT_PID, SSH_AUTH_SOCK, INSTALL_SSH_KEY_CONFIG_LOCATION, INSTALL_SSH_KEY_KNOWN_HOSTS_LOCATION
Wersja agenta 2.182.1 lub nowsza
Kategoria zadań Użyteczność
Wymaganie Opis
Typy potoków YAML, klasyczna kompilacja, wersja klasyczna
Działa na Agent, DeploymentGroup
Wymagania Żaden
możliwości To zadanie nie spełnia żadnych wymagań dotyczących kolejnych zadań w zadaniu.
ograniczenia poleceń Jakikolwiek
zmienne ustawiane Jakikolwiek
Wersja agenta 2.117.0 lub nowsza
Kategoria zadań Użyteczność