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 .configPort
configUser
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:
Generieren Sie ein Schlüsselpaar, das zum Authentifizieren des Zugriffs von GitHub auf Azure DevOps verwendet werden soll:
Führen Sie in GitBash den folgenden Befehl aus:
ssh-keygen -t rsa
Geben Sie einen Namen für das SSH-Schlüsselpaar ein. In unserem Beispiel verwenden wir myKey.
(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.
ssh-keygen
erstellt die SSH-Schlüsselpaare, und die folgende Erfolgsmeldung wird angezeigt:Überprüfen Sie in Windows Explorer Ihr neu erstelltes Schlüsselpaar:
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
.Wählen Sie Bereitstellungsschlüssel hinzufügen aus.
Geben Sie im Dialogfeld Neu hinzufügen einen Titel ein, und kopieren Sie dann den SSH-Schlüssel, und fügen Sie ihn ein:
Wählen Sie Schlüssel hinzufügen aus.
Laden Sie Ihren privaten Schlüssel in Azure DevOps hoch:
Wählen Sie in Azure DevOps im linken Menü pipelinesLibrary aus>.
Wählen Sie Sichere Dateien>+ Sichere Datei aus:
Wählen Sie Durchsuchen und dann Ihren privaten Schlüssel aus:
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:
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 |