Freigeben über


InstallSSHKey@0: Task "SSH-Schlüssel v0 installieren"

Verwenden Sie diese Aufgabe in einer Pipeline, um einen SSH-Schlüssel vor einem Build- oder Releaseschritt zu installieren.

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.

Eingaben

knownHostsEntry - Eintrag "Bekannte Hosts"
Eingabealias: hostName. string. Erforderlich.

Gibt den SSH-Schlüsseleintrag für die datei known_hosts an.


sshPublicKey - Öffentlicher SSH-Schlüssel
string.

Optional. Gibt den Inhalt des öffentlichen SSH-Schlüssels an.


sshPublicKey - Öffentlicher SSH-Schlüssel
string. Erforderlich.

Gibt den Inhalt des öffentlichen SSH-Schlüssels an.


sshPassphrase - SSH-Passphrase
string.

Optional. Gibt die Passphrase für den SSH-Schlüssel an, falls vorhanden.


sshKeySecureFile - SSH-Schlüssel
string. Erforderlich.

Gibt den SSH-Schlüssel an, der zur Secure Files Installation auf dem Agent hochgeladen wurde.


addEntryToConfig - Hinzufügen eines Eintrags zur SSH-Konfiguration
boolean. Standardwert. false.

Optional. Fügt einen Eintrag im Zusammenhang mit dem Schlüssel hinzu, der in der SSH-Konfigurationsdatei installiert wurde. Die Schlüsseldatei ist für alle nachfolgenden Aufgaben verfügbar.


configHostAlias - Alias
string. Erforderlich, wenn addEntryToConfig = true.

Gibt den Namen des SSH-Konfigurationseintrags an.


configHostname - Hostname
string. Erforderlich, wenn addEntryToConfig = true.

Gibt die Hostnameneigenschaft des SSH-Konfigurationseintrags an.


configUser - Benutzer
string. Optional. Verwenden Sie , wenn addEntryToConfig = true.

Gibt die Benutzernameneigenschaft des SSH-Konfigurationseintrags an.


configPort - Hafen
string. Optional. Verwenden Sie , wenn addEntryToConfig = true.

Gibt den Port des SSH-Konfigurationseintrags an.


hostName - Eintrag "Bekannte Hosts"
string. Erforderlich.

Gibt den SSH-Schlüsseleintrag für die datei known_hosts an.


Aufgabensteuerungsoptionen

Alle Aufgaben verfügen zusätzlich zu den Aufgabeneingaben über Steuerungsoptionen. Weitere Informationen finden Sie unter Steuerungsoptionen und allgemeine Aufgabeneigenschaften.

Ausgabevariablen

Keine.

Hinweise

Verwenden Sie diese Aufgabe in einer Pipeline, um einen SSH-Schlüssel vor einem Build- oder Releaseschritt zu installieren.

Hinweis

Für diese Aufgabe war Git Bash für Windows auf dem Agent erforderlich.

Verwendung und bewährte Methoden

Wenn Sie einen SSH-Schlüssel in den gehosteten Pools installieren, können Sie in späteren Schritten in Ihrer Pipeline eine Verbindung mit einem Remotesystem herstellen, in dem der übereinstimmende öffentliche Schlüssel bereits vorhanden ist. Sie können beispielsweise eine Verbindung mit einem Git-Repository oder mit einem virtuellen Computer in Azure herstellen.

Es wird empfohlen, Ihren öffentlichen Schlüssel nicht als Nur-Text an die Aufgabenkonfiguration zu übergeben. Legen Sie stattdessen eine Geheimvariable in Ihrer Pipeline für den Inhalt Ihrer mykey.pub Datei fest. Rufen Sie dann die Variable in Ihrer Pipelinedefinition als auf $(myPubKey). Verwenden Sie für den geheimen Teil Ihres Schlüssels die Bibliothek "Sichere Datei" in Azure Pipelines.

Verwenden Sie zum Erstellen Ihrer Aufgabe das folgende Beispiel für einen gut konfigurierten Task "SSH-Schlüssel installieren":

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

Hinweis

Ihr öffentlicher Schlüssel sollte dem Repository\organisation hinzugefügt werden. andernfalls treten Zugriffsprobleme auf. Befolgen Sie für GitHub die obige Anleitung. Verwenden Sie für Azure DevOps Services Den öffentlichen Schlüssel hinzufügen für Azure DevOps Services/TFS.

Installieren mehrerer SSH-Schlüssel im selben Pipelineauftrag

Wenn sie mehr als einen Schlüssel im selben Pipelineauftrag verwenden, wird standardmäßig der erste Schlüssel verwendet. Um beim Herstellen einer SSH-Verbindung den gewünschten Schlüssel verwenden zu können, können Sie den Advanced Abschnitt der InstallSSHKey Aufgabe verwenden, um die folgenden Parameter festzulegen: addEntryToConfig, , configHostAlias, configHostname, und .configPortconfigUser

Mit diesen Parametern können Sie der SSH-Konfigurationsdatei (z. B. für Linux) einen Host hinzufügen, /root/.ssh/config um ihn in benutzerdefinierten Skripts über einen Alias zu verwenden.

Nachdem der Buildvorgang abgeschlossen ist, versucht die Aufgabe, die ursprüngliche SSH-Konfigurationsdatei wiederherzustellen. Wenn anfangs keine SSH-Konfigurationsdatei vorhanden war, wird der Host aus dem Agent entfernt.

Ein Beispiel für die Installation mehrerer SSH-Schlüssel. Der Fall mit mehreren GitHub-Repositorys und einem eigenen Schlüssel für jedes:

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

Zugehörige GitHub-Dokumentation.

Beispiele

Beispieleinrichtung mit GitHub

In diesem Abschnitt wird beschrieben, wie Sie ein privates GitHub-Repository mit YAML aus Azure Pipelines verwenden.

Wenn Sie über ein Repository verfügen, das Sie nicht für die Open-Source-Community verfügbar machen möchten, ist es üblich, das Repository privat zu machen. Ein CI/CD-Tool wie Azure DevOps benötigt jedoch Zugriff auf das Repository, wenn Sie das Tool zum Verwalten des Repositorys verwenden möchten. Um Azure DevOps-Zugriff zu gewähren, benötigen Sie möglicherweise einen SSH-Schlüssel, um den Zugriff auf GitHub zu authentifizieren.

Hier sind die Schritte zum Verwenden eines SSH-Schlüssels zum Authentifizieren des Zugriffs auf GitHub:

  1. Generieren Sie ein Schlüsselpaar, das zum Authentifizieren des Zugriffs von GitHub auf Azure DevOps verwendet werden soll:

    1. Führen Sie in GitBash den folgenden Befehl aus:

      ssh-keygen -t rsa
      
    2. Geben Sie einen Namen für das SSH-Schlüsselpaar ein. In unserem Beispiel verwenden wir myKey.

      Screenshot der GitBash-Eingabeaufforderung, um einen Namen für Ihr SSH-Schlüsselpaar einzugeben.

    3. (Optional) Sie können eine Passphrase eingeben, um Ihren privaten Schlüssel zu verschlüsseln. Dieser Schritt ist optional. Die Verwendung einer Passphrase ist sicherer als die Verwendung einer Passphrase.

      Screenshot der GitBash-Aufforderung zum Eingeben einer Passphrase für Ihr SSH-Schlüsselpaar.

      ssh-keygen erstellt die SSH-Schlüsselpaare, und die folgende Erfolgsmeldung wird angezeigt:

      Screenshot der GitBash-Meldung, die zeigt, dass ein SSH-Schlüsselpaar erstellt wurde.

    4. Überprüfen Sie in Windows Explorer Ihr neu erstelltes Schlüsselpaar:

      Screenshot der Schlüsselpaardateien in Windows Explorer

  2. Fügen Sie dem GitHub-Repository den öffentlichen Schlüssel hinzu. (Der öffentliche Schlüssel endet in ".pub"). Rufen Sie hierzu die folgende URL in Ihrem Browser auf: https://github.com/(organization-name)/(repository-name)/settings/keys.

    1. Wählen Sie Bereitstellungsschlüssel hinzufügen aus.

    2. Geben Sie im Dialogfeld Neu hinzufügen einen Titel ein, und kopieren Sie dann den SSH-Schlüssel, und fügen Sie ihn ein:

      Screenshot des Dialogfelds

    3. Wählen Sie Schlüssel hinzufügen aus.

  3. Laden Sie Ihren privaten Schlüssel in Azure DevOps hoch:

    1. Wählen Sie in Azure DevOps im linken Menü pipelinesLibrary aus>.

      Screenshot des Azure Pipelines-Menüs.

    2. Wählen Sie Sichere Dateien>+ Sichere Datei aus:

      Screenshot des Menüs

    3. Wählen Sie Durchsuchen und dann Ihren privaten Schlüssel aus:

      Screenshot des Dialogfelds Datei hochladen und der Schaltfläche Durchsuchen.

  4. Stellen Sie Ihren "Eintrag für bekannte Hosts" wieder her. Geben Sie in GitBash den folgenden Befehl ein:

    ssh-keyscan github.com
    

    Ihr "Eintrag für bekannte Hosts" ist der angezeigte Wert, der in den GitBash-Ergebnissen nicht mit # beginnt:

    Screenshot der wichtigsten Suchergebnisse in GitBash.

  5. Erstellen Sie eine YAML-Pipeline.

    Um eine YAML-Pipeline zu erstellen, fügen Sie in der YAML-Definition die folgende Aufgabe hinzu:

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

Die SSH-Schlüssel sind jetzt installiert, und Sie können mit dem Skript fortfahren, um eine Verbindung mithilfe von SSH herzustellen, und nicht über das standardmäßige HTTPS.

Anforderungen

Anforderung Beschreibung
Pipelinetypen YAML, Klassischer Build, klassische Version
Wird ausgeführt auf Agent, DeploymentGroup
Forderungen Keine
Capabilities Diese Aufgabe erfüllt keine Anforderungen an nachfolgende Aufgaben im Auftrag.
Befehlseinschränkungen Dieser Task wird mit den folgenden Befehlseinschränkungen ausgeführt: restricted
Einstellbare Variablen Diese Aufgabe verfügt über die Berechtigung zum Festlegen der folgenden Variablen: SSH_AGENT_PID, SSH_AUTH_SOCK, INSTALL_SSH_KEY_CONFIG_LOCATION, INSTALL_SSH_KEY_KNOWN_HOSTS_LOCATION
Agent-Version 2.182.1 oder höher
Aufgabenkategorie Hilfsprogramm
Anforderung Beschreibung
Pipelinetypen YAML, Klassischer Build, klassische Version
Wird ausgeführt auf Agent, DeploymentGroup
Forderungen Keine
Capabilities Diese Aufgabe erfüllt keine Anforderungen an nachfolgende Aufgaben im Auftrag.
Befehlseinschränkungen Any
Einstellbare Variablen Any
Agent-Version 2.117.0 oder höher
Aufgabenkategorie Hilfsprogramm