Dela via


InstallSSHKey@0 – Installera SSH-nyckel v0-uppgift

Använd den här uppgiften i en pipeline för att installera en SSH-nyckel före ett bygg- eller versionssteg.

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.

Ingångar

knownHostsEntry - kända värdinmatning
Indataalias: hostName. string. Obligatoriskt.

Anger SSH-nyckelposten för known_hosts-filen.


sshPublicKey - offentlig SSH-nyckel
string.

Valfritt. Anger innehållet i den offentliga SSH-nyckeln.


sshPassphrase - SSH-lösenfras
string.

Valfritt. Anger lösenfrasen för SSH-nyckeln, om någon.


sshKeySecureFile - SSH-nyckel
string. Obligatoriskt.

Anger den SSH-nyckel som laddades upp till Secure Files som ska installeras på agenten.


addEntryToConfig - Lägg till post i SSH-konfigurationen
boolean. Standardvärde: false.

Valfritt. Lägger till en post som är relaterad till nyckeln som installerades i SSH-konfigurationsfilen. Nyckelfilen kommer att vara tillgänglig för alla efterföljande uppgifter.


configHostAlias - alias
string. Krävs när addEntryToConfig = true.

Anger namnet på SSH-konfigurationsposten.


configHostname - Värdnamn
string. Krävs när addEntryToConfig = true.

Anger värdnamnsegenskapen för SSH-konfigurationsposten.


configUser - användare
string. Valfritt. Använd när addEntryToConfig = true.

Anger användarnamnsegenskapen för SSH-konfigurationsposten.


configPort - port
string. Valfritt. Använd när addEntryToConfig = true.

Anger porten för SSH-konfigurationsposten.


Kontrollalternativ för aktivitet

Alla aktiviteter har kontrollalternativ utöver sina aktivitetsindata. Mer information finns i Kontrollalternativ och vanliga uppgiftsegenskaper.

Utdatavariabler

Ingen.

Anmärkningar

Använd den här uppgiften i en pipeline för att installera en SSH-nyckel före ett bygg- eller versionssteg.

Anmärkning

Den här uppgiften krävde Git Bash för Windows på agenten.

Användning och metodtips

Om du installerar en SSH-nyckel i värdbaserade pooleri senare steg i pipelinen kan du ansluta till ett fjärrsystem där den matchande offentliga nyckeln redan finns. Du kan till exempel ansluta till en Git-lagringsplats eller till en virtuell dator i Azure.

Vi rekommenderar att du inte skickar den offentliga nyckeln som oformaterad text till aktivitetskonfigurationen. I stället ange en hemlig variabel i pipelinen för innehållet i din mykey.pub-fil. Anropa sedan variabeln i pipelinedefinitionen som $(myPubKey). För den hemliga delen av nyckeln använder du secure file library i Azure Pipelines.

Om du vill skapa din uppgift använder du följande exempel på en välkonfigurerad installera SSH-nyckeluppgift:

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

Anmärkning

Den offentliga nyckeln ska läggas till i lagringsplatsen/organisationen. annars blir det åtkomstproblem. För GitHub följer du guiden ovan. För Azure DevOps Services använder du Lägg till den offentliga nyckeln i Azure DevOps Services/TFS.

Installera flera SSH-nycklar i samma pipelinejobb

När du använder mer än en nyckel i samma pipelinejobb används den första som standard. Om du vill kunna använda önskad nyckel när du upprättar en SSH-anslutning kan du använda avsnittet Advanced i InstallSSHKey för att ange följande parametrar: addEntryToConfig, configHostAlias, configHostname, configUseroch configPort.

Med de här parametrarna kan du lägga till en värd i SSH-konfigurationsfilen (till exempel /root/.ssh/config för Linux) för att kunna använda den i anpassade skript via ett alias.

När bygget är klart försöker uppgiften återställa den ursprungliga SSH-konfigurationsfilen. Om det inte fanns någon SSH-konfigurationsfil från början tas värden bort från agenten.

Ett exempel på installation av flera SSH-nycklar. Fallet med flera GitHub-lagringsplatser och deras egen nyckel för var och en:

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

Relaterade GitHub-dokument.

Exempel

Exempel på konfiguration med GitHub

I det här avsnittet beskrivs hur du använder en privat GitHub-lagringsplats med YAML inifrån Azure Pipelines.

Om du har en lagringsplats som du inte vill exponera för communityn med öppen källkod är det vanligt att göra lagringsplatsen privat. Ett CI/CD-verktyg som Azure DevOps behöver dock åtkomst till lagringsplatsen om du vill använda verktyget för att hantera lagringsplatsen. För att ge Azure DevOps åtkomst kan du behöva en SSH-nyckel för att autentisera åtkomsten till GitHub.

Här följer stegen för att använda en SSH-nyckel för att autentisera åtkomsten till GitHub:

  1. Generera ett nyckelpar som ska användas för att autentisera åtkomst från GitHub till Azure DevOps:

    1. Kör följande kommando i GitBash:

      ssh-keygen -t rsa
      
    2. Ange ett namn för SSH-nyckelparet. I vårt exempel använder vi myKey-.

      Skärmbild av GitBash-prompten för att ange ett namn på ditt SSH-nyckelpar.

    3. (Valfritt) Du kan ange en lösenfras för att kryptera din privata nyckel. Det här steget är valfritt. Det är säkrare att använda en lösenfras än att inte använda en.

      Skärmbild av GitBash-prompten för att ange en lösenfras för ditt SSH-nyckelpar.

      ssh-keygen skapar SSH-nyckelparen och följande meddelande visas:

      Skärmbild av GitBash-meddelandet som visar att ett SSH-nyckelpar har skapats.

    4. I Utforskaren i Windows kontrollerar du det nyligen skapade nyckelparet:

      Skärmbild av nyckelparfilerna i Utforskaren i Windows.

  2. Lägg till den offentliga nyckeln till GitHub-lagringsplatsen. (Den offentliga nyckeln slutar i ".pub"). Det gör du genom att gå till följande URL i webbläsaren: https://github.com/(organization-name)/(repository-name)/settings/keys.

    1. Välj Lägg till distributionsnyckel.

    2. I dialogrutan Lägg till ny anger du en rubrik och kopierar och klistrar sedan in SSH-nyckeln:

      Skärmbild av dialogrutan Lägg till ny.

    3. Välj Lägg till nyckel.

  3. Ladda upp din privata nyckel till Azure DevOps:

    1. I Azure DevOps går du till den vänstra menyn och väljer Pipelines>Library.

      Skärmbild av Menyn Azure Pipelines.

    2. Välj Säkra filer>+ Säker fil:

      Skärmbild av menyn Säkra filer.

    3. Välj Bläddraoch välj sedan din privata nyckel:

      Skärmbild av dialogrutan Ladda upp fil och knappen Bläddra.

  4. Återställ posten "Kända värdar". I GitBash anger du följande kommando:

    ssh-keyscan github.com
    

    Posten "Kända värdar" är det visade värdet som inte börjar med # i GitBash-resultatet:

    Skärmbild av viktiga sökresultat i GitBash.

  5. Skapa en YAML-pipeline.

    Om du vill skapa en YAML-pipeline lägger du till följande uppgift i YAML-definitionen:

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

SSH-nycklarna är nu installerade och du kan fortsätta med skriptet för att ansluta med hjälp av SSH och inte standard-HTTPS.

Krav

Krav Beskrivning
Pipelinetyper YAML, klassisk version, klassisk version
Körs på Agent, DeploymentGroup
kräver Ingen
funktioner Den här aktiviteten uppfyller inte några krav på efterföljande uppgifter i jobbet.
Kommandobegränsningar Den här aktiviteten körs med hjälp av följande kommandobegränsningar: begränsad
variabler som kan Den här uppgiften har behörighet att ange följande variabler: SSH_AGENT_PID, SSH_AUTH_SOCK, INSTALL_SSH_KEY_CONFIG_LOCATION INSTALL_SSH_KEY_KNOWN_HOSTS_LOCATION
Agentversion 2.182.1 eller senare
Aktivitetskategori Nytta
Krav Beskrivning
Pipelinetyper YAML, klassisk version, klassisk version
Körs på Agent, DeploymentGroup
kräver Ingen
funktioner Den här aktiviteten uppfyller inte några krav på efterföljande uppgifter i jobbet.
Kommandobegränsningar Vilken som helst
variabler som kan Vilken som helst
Agentversion 2.117.0 eller senare
Aktivitetskategori Nytta