Partager via


InstallSSHKey@0 - Tâche Installer la clé SSH v0

Utilisez cette tâche dans un pipeline pour installer une clé SSH avant une étape de génération ou de mise en production.

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.

Entrées

knownHostsEntry - Entrée d’hôtes connus
Alias d’entrée : hostName. string. Obligatoire.

Spécifie l’entrée de clé SSH pour le fichier known_hosts.


sshPublicKey - Clé publique SSH
string.

facultatif. Spécifie le contenu de la clé SSH publique.


sshPublicKey - Clé publique SSH
string. Obligatoire.

Spécifie le contenu de la clé SSH publique.


sshPassphrase - Phrase secrète SSH
string.

facultatif. Spécifie la phrase secrète de la clé SSH, le cas échéant.


sshKeySecureFile - Clé SSH
string. Obligatoire.

Spécifie la clé SSH sur laquelle a été chargé l’installation Secure Files sur l’agent.


addEntryToConfig - Ajouter une entrée à la configuration SSH
boolean. Valeur par défaut : false.

facultatif. Ajoute une entrée liée à la clé qui a été installée dans le fichier de configuration SSH. Le fichier de clé sera disponible pour toutes les tâches suivantes.


configHostAlias - Alias
string. Obligatoire quand addEntryToConfig = true.

Spécifie le nom de l’entrée de configuration SSH.


configHostname - Nom d’hôte
string. Obligatoire quand addEntryToConfig = true.

Spécifie la propriété de nom d’hôte de l’entrée de configuration SSH.


configUser - Utilisateur
string. facultatif. Utilisez quand addEntryToConfig = true.

Spécifie la propriété nom d’utilisateur de l’entrée de configuration SSH.


configPort - Port
string. facultatif. Utilisez quand addEntryToConfig = true.

Spécifie le port de l’entrée de configuration SSH.


hostName - Entrée d’hôtes connus
string. Obligatoire.

Spécifie l’entrée de clé SSH pour le fichier known_hosts.


Options de contrôle des tâches

Toutes les tâches ont des options de contrôle en plus de leurs entrées de tâches. Pour plus d’informations, consultez Options de contrôle et propriétés de tâche courantes.

Variables de sortie

Aucun.

Notes

Utilisez cette tâche dans un pipeline pour installer une clé SSH avant une étape de génération ou de mise en production.

Notes

Cette tâche nécessitait Git Bash pour Windows sur l’agent.

Utilisation et meilleures pratiques

Si vous installez une clé SSH dans les pools hébergés, dans les étapes ultérieures de votre pipeline, vous pouvez vous connecter à un système distant dans lequel la clé publique correspondante est déjà en place. Par exemple, vous pouvez vous connecter à un dépôt Git ou à une machine virtuelle dans Azure.

Nous vous recommandons de ne pas passer votre clé publique en texte brut à la configuration de la tâche. Au lieu de cela, définissez une variable secrète dans votre pipeline pour le contenu de votre mykey.pub fichier. Ensuite, appelez la variable dans votre définition de pipeline en tant que $(myPubKey). Pour la partie secrète de votre clé, utilisez la bibliothèque de fichiers sécurisés dans Azure Pipelines.

Pour créer votre tâche, utilisez l’exemple suivant d’une tâche d’installation de clé SSH bien configurée :

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

Notes

Votre clé publique doit être ajoutée au dépôt\organisation ; sinon, il y aura des problèmes d’accès. Pour GitHub, suivez le guide ci-dessus. Pour Azure DevOps Services, utilisez Ajouter la clé publique à Azure DevOps Services/TFS.

Installation de plusieurs clés SSH dans le même travail de pipeline

Lorsque vous utilisez plusieurs clés dans le même travail de pipeline, la première est utilisée par défaut. Pour pouvoir utiliser la clé souhaitée lors de l’établissement d’une connexion SSH, vous pouvez utiliser la Advanced section de la InstallSSHKey tâche pour définir les paramètres suivants : addEntryToConfig, configHostAlias, configHostname, configUseret configPort.

Ces paramètres vous permettent d’ajouter un hôte au fichier de configuration SSH (par exemple, /root/.ssh/config pour Linux) afin de l’utiliser dans des scripts personnalisés via un alias.

Une fois la génération terminée, la tâche tente de restaurer le fichier de configuration SSH d’origine. S’il n’y avait pas de fichier de configuration SSH initialement, l’hôte est supprimé de l’agent.

Exemple d’installation de plusieurs clés SSH. Le cas avec plusieurs dépôts GitHub et leur propre clé pour chacun d’eux :

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

Documents GitHub connexes.

Exemples

Exemple de configuration à l’aide de GitHub

Cette section explique comment utiliser un dépôt GitHub privé avec YAML à partir d’Azure Pipelines.

Si vous avez un dépôt que vous ne souhaitez pas exposer à la communauté open source, une pratique courante consiste à le rendre privé. Toutefois, un outil CI/CD comme Azure DevOps doit accéder au dépôt si vous souhaitez utiliser l’outil pour gérer le dépôt. Pour accorder l’accès à Azure DevOps, vous aurez peut-être besoin d’une clé SSH pour authentifier l’accès à GitHub.

Voici les étapes à suivre pour utiliser une clé SSH pour authentifier l’accès à GitHub :

  1. Générez une paire de clés à utiliser pour authentifier l’accès de GitHub à Azure DevOps :

    1. Dans GitBash, exécutez la commande suivante :

      ssh-keygen -t rsa
      
    2. Entrez un nom pour la paire de clés SSH. Dans notre exemple, nous utilisons myKey.

      Capture d’écran de l’invite GitBash pour entrer un nom pour votre paire de clés SSH.

    3. (Facultatif) Vous pouvez entrer une phrase secrète pour chiffrer votre clé privée. Cette étape est facultative. L’utilisation d’une phrase secrète est plus sécurisée que l’utilisation d’une phrase secrète.

      Capture d’écran de l’invite GitBash pour entrer une phrase secrète pour votre paire de clés SSH.

      ssh-keygen crée les paires de clés SSH et le message de réussite suivant s’affiche :

      Capture d’écran du message GitBash montrant qu’une paire de clés SSH a été créée.

    4. Dans Windows Explorateur de fichiers, vérifiez la paire de clés nouvellement créée :

      Capture d’écran des fichiers de paire de clés dans Windows Explorateur de fichiers.

  2. Ajoutez la clé publique au dépôt GitHub. (La clé publique se termine par .pub). Pour ce faire, accédez à l’URL suivante dans votre navigateur : https://github.com/(organization-name)/(repository-name)/settings/keys.

    1. Sélectionnez Ajouter une clé de déploiement.

    2. Dans la boîte de dialogue Ajouter un nouveau , entrez un titre, puis copiez et collez la clé SSH :

      Capture d’écran de la boîte de dialogue Ajouter un nouveau.

    3. Sélectionnez Ajouter une clé.

  3. Chargez votre clé privée dans Azure DevOps :

    1. Dans Azure DevOps, dans le menu de gauche, sélectionnezBibliothèquede pipelines>.

      Capture d’écran du menu Azure Pipelines.

    2. Sélectionnez Fichiers sécurisés>+ Fichier sécurisé :

      Capture d’écran du menu Fichiers sécurisés.

    3. Sélectionnez Parcourir, puis sélectionnez votre clé privée :

      Capture d’écran de la boîte de dialogue Charger un fichier et du bouton Parcourir.

  4. Récupérez votre « entrée d’hôtes connus ». Dans GitBash, entrez la commande suivante :

    ssh-keyscan github.com
    

    Votre « Entrée d’hôtes connus » est la valeur affichée qui ne commence pas par # dans les résultats GitBash :

    Capture d’écran des résultats de recherche clés dans GitBash.

  5. Créez un pipeline YAML.

    Pour créer un pipeline YAML, dans la définition YAML, ajoutez la tâche suivante :

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

Les clés SSH sont maintenant installées et vous pouvez utiliser le script pour vous connecter à l’aide de SSH, et non du protocole HTTPS par défaut.

Spécifications

Condition requise Description
Types de pipelines YAML, build classique, version classique
S’exécute sur Agent, DeploymentGroup
Demandes Aucun
Capabilities Cette tâche ne répond à aucune demande pour les tâches suivantes dans le travail.
Restrictions de commande Cette tâche s’exécute à l’aide des restrictions de commande suivantes : restricted
Variables paramétrables Cette tâche est autorisée à définir les variables suivantes : SSH_AGENT_PID, SSH_AUTH_SOCK, INSTALL_SSH_KEY_CONFIG_LOCATION, INSTALL_SSH_KEY_KNOWN_HOSTS_LOCATION
Version de l’agent 2.182.1 ou version ultérieure
Catégorie de la tâche Utilitaire
Condition requise Description
Types de pipelines YAML, build classique, version classique
S’exécute sur Agent, DeploymentGroup
Demandes Aucun
Capabilities Cette tâche ne répond à aucune demande pour les tâches suivantes dans le travail.
Restrictions de commande Quelconque
Variables paramétrables Quelconque
Version de l’agent 2.117.0 ou version ultérieure
Catégorie de la tâche Utilitaire