Condividi tramite


InstallSSHKey@0 - Installare l'attività chiave SSH v0

Usare questa attività in una pipeline per installare una chiave SSH prima di un passaggio di compilazione o versione.

Sintassi

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

Input

knownHostsEntry - Voce host noti
Alias di input: hostName. string. Obbligatorio.

Specifica la voce della chiave SSH per il file known_hosts.


sshPublicKey - Chiave pubblica SSH
string.

Facoltativa. Specifica il contenuto della chiave SSH pubblica.


sshPublicKey - Chiave pubblica SSH
string. Obbligatorio.

Specifica il contenuto della chiave SSH pubblica.


sshPassphrase - SSH Passphrase
string.

Facoltativa. Specifica la passphrase per la chiave SSH, se presente.


sshKeySecureFile - Chiave SSH
string. Obbligatorio.

Specifica la chiave SSH caricata per Secure Files l'installazione nell'agente.


addEntryToConfig - Aggiungere la voce alla configurazione SSH
boolean. Valore predefinito: false.

Facoltativa. Aggiunge una voce correlata alla chiave installata nel file di configurazione SSH. Il file chiave sarà disponibile per tutte le attività successive.


configHostAlias - Alias
string. Obbligatorio quando addEntryToConfig = true.

Specifica il nome della voce di configurazione SSH.


configHostname - Nome host
string. Obbligatorio quando addEntryToConfig = true.

Specifica la proprietà nome host della voce di configurazione SSH.


configUser - Utente
string. Facoltativa. Usare quando addEntryToConfig = true.

Specifica la proprietà nome utente della voce di configurazione SSH.


configPort - Porta
string. Facoltativa. Usare quando addEntryToConfig = true.

Specifica la porta della voce di configurazione SSH.


hostName - Voce host noti
string. Obbligatorio.

Specifica la voce della chiave SSH per il file known_hosts.


Opzioni di controllo attività

Tutte le attività dispongono di opzioni di controllo oltre ai relativi input attività. Per altre informazioni, vedere Opzioni di controllo e proprietà comuni delle attività.

Variabili di output

No.

Osservazioni

Usare questa attività in una pipeline per installare una chiave SSH prima di un passaggio di compilazione o versione.

Nota

Questa attività richiede Git Bash per Windows nell'agente.

Procedure consigliate e di utilizzo

Se si installa una chiave SSH nei pool ospitati, nei passaggi successivi della pipeline è possibile connettersi a un sistema remoto in cui è già presente la chiave pubblica corrispondente. Ad esempio, è possibile connettersi a un repository Git o a una macchina virtuale in Azure.

È consigliabile non passare la chiave pubblica come testo normale alla configurazione dell'attività. Impostare invece una variabile privata nella pipeline per il contenuto del mykey.pub file. Chiamare quindi la variabile nella definizione della pipeline come $(myPubKey). Per la parte privata della chiave, usare la libreria file sicura in Azure Pipelines.

Per creare l'attività, usare l'esempio seguente di un'attività Installa chiave SSH ben configurata:

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

Nota

La chiave pubblica deve essere aggiunta al repository\organizzazione; in caso contrario, ci saranno problemi di accesso. Per GitHub, seguire la guida precedente. Per Azure DevOps Services, usare Aggiungi la chiave pubblica a Azure DevOps Services/TFS.

Installazione di più chiavi SSH nello stesso processo della pipeline

Quando si usano più chiavi nello stesso processo della pipeline, la prima viene usata per impostazione predefinita. Per poter usare la chiave desiderata quando si stabilisce una connessione SSH, è possibile usare la Advanced sezione dell'attività InstallSSHKey per impostare i parametri seguenti: addEntryToConfig, configHostAliasconfigHostname, , configUsere configPort.

Questi parametri consentono di aggiungere un host al file di configurazione SSH ,ad esempio /root/.ssh/config per Linux, per usarlo negli script personalizzati tramite un alias.

Al termine della compilazione, l'attività tenterà di ripristinare il file di configurazione SSH originale. Se inizialmente non è presente alcun file di configurazione SSH, l'host viene rimosso dall'agente.

Esempio di installazione di più chiavi SSH. Il caso con diversi repository GitHub e la propria chiave per ognuno di essi:

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

Documentazione di GitHub correlata.

Esempio

Configurazione di esempio con GitHub

Questa sezione descrive come usare un repository GitHub privato con YAML dall'interno di Azure Pipelines.

Se si dispone di un repository che non si vuole esporre alla community open source, una procedura comune consiste nel rendere privato il repository. Tuttavia, uno strumento CI/CD come Azure DevOps deve accedere al repository se si vuole usare lo strumento per gestire il repository. Per concedere l'accesso ad Azure DevOps, potrebbe essere necessaria una chiave SSH per autenticare l'accesso a GitHub.

Ecco i passaggi per usare una chiave SSH per autenticare l'accesso a GitHub:

  1. Generare una coppia di chiavi da usare per autenticare l'accesso da GitHub ad Azure DevOps:

    1. In GitBash eseguire il comando seguente:

      ssh-keygen -t rsa
      
    2. Immettere un nome per la coppia di chiavi SSH. Nell'esempio viene usato myKey.

      Screenshot del prompt di GitBash per immettere un nome per la coppia di chiavi SSH.

    3. (Facoltativo) È possibile immettere una passphrase per crittografare la chiave privata. Questo passaggio è facoltativo. L'uso di una passphrase è più sicuro di non usare uno.

      Screenshot del prompt di GitBash per immettere una passphrase per la coppia di chiavi SSH.

      ssh-keygen crea le coppie di chiavi SSH e viene visualizzato il messaggio di esito positivo seguente:

      Screenshot del messaggio GitBash che mostra che è stata creata una coppia di chiavi SSH.

    4. In Windows Esplora file controllare la coppia di chiavi appena creata:

      Screenshot dei file di coppia di chiavi in Windows Esplora file.

  2. Aggiungere la chiave pubblica al repository GitHub. La chiave pubblica termina in ".pub"). A tale scopo, passare all'URL seguente nel browser: https://github.com/(organization-name)/(repository-name)/settings/keys.

    1. Selezionare Add deploy key.

    2. Nella finestra di dialogo Aggiungi nuovo immettere un titolo e quindi copiare e incollare la chiave SSH:

      Screenshot della finestra di dialogo Aggiungi nuova finestra di dialogo.

    3. Selezionare Add key.

  3. Caricare la chiave privata in Azure DevOps:

    1. Nel menu a sinistra di Azure DevOps selezionare Libreria pipeline>.

      Screenshot del menu Azure Pipelines.

    2. Selezionare Secure files+ Secure file ( Secure files>+ Secure file):

      Screenshot del menu File protetti.

    3. Selezionare Sfoglia e quindi selezionare la chiave privata:

      Screenshot della finestra di dialogo Carica file e del pulsante Sfoglia.

  4. Recuperare la voce "Host noti". In GitBash immettere il comando seguente:

    ssh-keyscan github.com
    

    La voce "Host noti" è il valore visualizzato che non inizia con # nei risultati di GitBash:

    Screenshot dei risultati della ricerca chiave in GitBash.

  5. Creare una pipeline YAML.

    Per creare una pipeline YAML, nella definizione YAML aggiungere l'attività seguente:

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

Le chiavi SSH sono ora installate ed è possibile procedere con lo script per connettersi usando SSH e non il protocollo HTTPS predefinito.

Requisiti

Requisito Descrizione
Tipi di pipeline YAML, build classica, versione classica
Viene eseguito in Agente, DeploymentGroup
Richieste Nessuno
Capabilities Questa attività non soddisfa le richieste per le attività successive nel processo.
Restrizioni dei comandi Questa attività viene eseguita usando le restrizioni di comando seguenti: con restrizioni
Variabili impostabili Questa attività dispone dell'autorizzazione per impostare le variabili seguenti: SSH_AGENT_PID, SSH_AUTH_SOCK, INSTALL_SSH_KEY_CONFIG_LOCATION, INSTALL_SSH_KEY_KNOWN_HOSTS_LOCATION
Versione agente 2.182.1 o versione successiva
Categoria attività Utilità
Requisito Descrizione
Tipi di pipeline YAML, build classica, versione classica
Viene eseguito in Agente, DeploymentGroup
Richieste Nessuno
Capabilities Questa attività non soddisfa le richieste per le attività successive nel processo.
Restrizioni dei comandi Qualsiasi
Variabili impostabili Qualsiasi
Versione agente 2.117.0 o versione successiva
Categoria attività Utilità