• krav
  • alternativ för SSH keys
  • granska befintliga SSH keys
  • generera ett nytt ssh key pair
    • ED25519 SSH keys
    • RSA SSH keys
    • vanliga steg för att generera ett SSH key pair
    • RSA keys och openssh från version 6.5 till 7.,8
  • lägga till en SSH-nyckel till ditt GitLab-konto
  • tvåfaktorsautentisering (2FA)
  • testa att allt är korrekt inställt
  • arbeta med icke-standard ssh-nyckelparvägar
  • per-repository SSH-nycklar
  • flera konton på en enda GitLab-instans
  • distribuera nycklar
  • program
    • eclipse
  • SSH på GitLab-servern
    • alternativ för Microsoft Windows
  • felsökning

git är ett distribuerat versionshanteringssystem, vilket innebär att du kan arbeta lokalt.,Dessutom kan du också dela eller” push ” dina ändringar till andra servrar.GitLab stöder säker kommunikation mellan Git och dess servrar med SSH-nycklar.

SSH-protokollet ger denna säkerhet och låter dig autentisera till thegitlab-fjärrservern utan att ange ditt användarnamn eller lösenord varje gång.

den här sidan kan hjälpa dig att konfigurera säkra SSH-nycklar som du kan använda för att hjälpa secureconnections till GitLab repositories.

  • Om du behöver information om att skapa SSH-nycklar, börja med våra alternativ för SSH-nycklar.,
  • Om du har SSH-nycklar dedikerade till ditt GitLab-konto kan du vara intresserad av att arbeta med SSH-nyckelparvägar som inte är standard.
  • Om du redan har ett SSH-nyckelpar kan du gå till hur du kan lägga till en SSH-nyckel till ditt GitLab-konto.

krav

För att stödja SSH kräver GitLab installationen av OpenSSH-klienten, vilkenkommer förinstallerad på GNU / Linux och macOS, liksom på Windows 10.

se till att ditt system innehåller SSH version 6.5 eller senare, eftersom det utesluterdet nu osäkra MD5-signaturschemat., Följande kommando returnerar versionen avssh installerat på ditt system:

ssh -V

medan GitLab inte stöder installation på Microsoft Windows kan du ställa in SSH-nycklar för att konfigurera Windows som klient.

alternativ för SSH-tangenter

GitLab stöder användningen av tangenterna RSA, DSA, ECDSA och ED25519.

  • GitLab har föråldrat DSA-nycklar i GitLab 11.0.
  • som noterat i praktisk kryptografi med Go gäller säkerhetsproblemen relaterade till DSA även för ECDSA.,
noteAvailable documentation tyder på att ED25519 är säkrare. Om du använder en RSA-nyckel rekommenderar US National Institute of Science and Technology i publikation 800-57 del 3 (PDF) en nyckelstorlek på minst 2048 bitar.

därför fokuserar vår dokumentation på användningen av ED25519 och RSA-nycklar.

administratörer kan begränsa vilka nycklar som ska tillåtas och deras minsta längd.

granska befintliga SSH-nycklar

om du har befintliga SSH-nycklar kan du kanske använda dem för att säkra anslutningar med GitLabrepositories., Som standard lagras SSH-nycklar på Linux och macOS-system i användarens hemkatalog, i underkatalogen .ssh/. Följande tabell innehåller standardfilnamn för varje SSH-nyckelalgoritm:

för rekommendationer, se alternativ för SSH-nycklar.

generera ett nytt ssh-nyckelpar

om du vill skapa:

  • en ED25519-nyckel, läs ED25519 SSH-nycklar.
  • en RSA-nyckel, läs RSA SSH-nycklar.

ED25519 SSH nycklar

boken praktisk kryptografi med Gosuggests att ED25519 nycklar är säkrare och performant än RSA nycklar.,

eftersom OpenSSH 6.5 introducerade ED25519 SSH-nycklar under 2014, bör de vara tillgängliga på alla aktuella operativsystem.

Du kan skapa och konfigurera en ED25519-nyckel med följande kommando:

ssh-keygen -t ed25519 -C "<comment>"

flaggan-C, med en citerad kommentar som en e-postadress, är ett valfritt sätt att märka dina SSH-nycklar.

du ser ett svar som liknar:

Generating public/private ed25519 key pair.Enter file in which to save the key (/home/user/.ssh/id_ed25519):

för vägledning, fortsätt till de gemensamma stegen.,

RSA SSH-nycklar

om du använder RSA-nycklar för SSH rekommenderar US National Institute of Standards and Technology att du använder en nyckelstorlek på minst 2048 bits.By som standard skapar kommandot ssh-keygen en 1024-bitars RSA-nyckel.,

Du kan skapa och konfigurera en RSA-nyckel med följande kommando, som om så önskas ersätter den minsta rekommenderade nyckelstorleken på2048:

ssh-keygen -t rsa -b 2048 -C "[email protected]"

-C – flaggan, med en citerad kommentar som en e-postadress, är ett valfritt sätt att märka din SSH nycklar.

du ser ett svar som liknar:

Generating public/private rsa key pair.Enter file in which to save the key (/home/user/.ssh/id_rsa):

för vägledning, fortsätt till de gemensamma stegen.

noteIf du har OpenSSH version 7.,8 eller nedan, överväga problemen associerademed kodning.

vanliga steg för att skapa ett SSH-nyckelpar

oavsett om du skapar en ED25519 eller en RSA-nyckel, har du börjat med ssh-keygen command.At den här punkten visas följande meddelande i kommandoraden (för ed25519-tangenter):

Generating public/private ed25519 key pair.Enter file in which to save the key (/home/user/.ssh/id_ed25519):

om du inte redan har ett SSH-nyckelpar och inte genererar en distribueringsnyckel, acceptera den föreslagna filen och katalogen. Din SSH-klient använderdet resulterande SSH-nyckelparet utan ytterligare konfiguration.,

Alternativt kan du spara det nya SSH-nyckelparet på en annan plats.Du kan tilldela katalogen och filnamnet som du väljer.Du kan också ägna det SSH-nyckelparet till en viss värd.

När du har tilldelat en fil för att spara din SSH-nyckel kan du ställa in en lösenfras för din SSH-nyckel:

Enter passphrase (empty for no passphrase):Enter same passphrase again:

om det lyckas ser du en bekräftelse på var kommandot ssh-keygen sparade din identifiering och privata nyckel.,

När det behövs kan du uppdatera lösenfrasen med följande kommando:

ssh-keygen -p -f /path/to/ssh_key

RSA-tangenter och OpenSSH från versionerna 6.5 till 7.8

innan OpenSSH 7.8 baserades standardavtrycket för RSA-tangenter på MD5 och är därför osäkert.

Om din versionen av OpenSSH ligger mellan version 6.5 till version 7.8 (inclusive),kör ssh-keygen med -o alternativ för att spara dina privata SSH-nycklar i mer secureOpenSSH format.,

om du redan har ett RSA SSH-nyckelpar att använda med GitLab, överväg att uppgradera detFör att använda det säkrare lösenordskrypteringsformatet. Du kan göra det med följande kommando:

ssh-keygen -o -f ~/.ssh/id_rsa

Alternativt kan du skapa en ny RSA-nyckel med det säkrare krypteringsformatet med följande kommando:

ssh-keygen -o -t rsa -b 4096 -C "[email protected]"
noteAs noteras i ssh-keygen man page, ed25519 krypterar redan nycklar till mer secureopenssh format.,

lägga till en SSH-nyckel till ditt GitLab-konto

Nu kan du kopiera SSH-nyckeln du skapade till ditt GitLab-konto. Gör så här:

  1. kopiera din offentliga SSH-nyckel till en plats som sparar information i textformat.,Följande alternativ sparar information för ED25519-tangenter till clipboardför det noterade operativsystemet:

    macOS:

    pbcopy < ~/.ssh/id_ed25519.pub

    Linux (kräver paketet xclip):

    xclip -sel clip < ~/.ssh/id_ed25519.pub

    git Bash på Windows:

    cat ~/.ssh/id_ed25519.pub | clip

    om du använder en RSA-nyckel, ersätt därefter.

  2. navigera till eller din lokala GitLab-instansadress och logga in.,
  3. Välj din avatar i det övre högra hörnet och klicka på Inställningar
  4. Klicka på SSH-nycklar.
  5. klistra in den offentliga nyckeln som du kopierade till nyckeltextrutan.
  6. se till att din nyckel innehåller ett beskrivande namn i textrutan Titel, till exempel work Laptop orHome Workstation.
  7. inkludera ett (valfritt) utgångsdatum för nyckeln under ”Expires at” – avsnittet. (Infördes i GitLab 12.9.)
  8. Klicka på knappen Lägg till Nyckel.

SSH-nycklar som har ”gått ut” med den här proceduren är giltiga i GitLab-arbetsflöden.,Eftersom GitLab-konfigurerade utgångsdatum inte ingår i själva SSH-nyckeln kan du fortfarande exportera offentliga SSH-nycklar efter behov.

noteom du manuellt kopierade din offentliga SSH-nyckel, se till att du kopierade hela nyckeln som börjar medssh-ed25519 (ellerssh-rsa) och slutar med din e-postadress.

tvåfaktorsautentisering (2FA)

Du kan ställa in tvåfaktorsautentisering (2FA) forGit över SSH.,

testa att allt är korrekt inställt

för att testa om din SSH-nyckel har lagts till korrekt, kör followingcommand i din terminal (ersättgitlab.com med domänen ofyour GitLab-instans):

första gången du ansluter till GitLab via SSH, du bör verifiera autenticiteten hos GitLab-värden som du ansluter till.Till exempel när du ansluter till GitLab.com, svara yes för att lägga till GitLab.,kom tilllistan över betrodda värdar:

The authenticity of host 'gitlab.com (35.231.145.151)' can't be established.ECDSA key fingerprint is SHA256:HbW3g8zUjNSksFbqTiUWPWg2Bq1x8xdGUrliXFzSnUw.Are you sure you want to continue connecting (yes/no)? yesWarning: Permanently added 'gitlab.com' (ECDSA) to the list of known hosts.
noteFor GitLab.com, konsultera theSSH host keys fingeravtryck, avsnitt för att se till att du ansluter till rätt server. Du kan till exempel se ECDSA-nyckelfingertavtrycket som visas ovan i den länkade sektionen.

När du har lagt till listan över kända värdar bör du validera GitLab-värdens autenticitet igen. Kör ovanstående commandagain, och du bör få en Välkommen till GitLab, @username! meddelande.,

om välkomstmeddelandet inte visas kan du felsöka problemet genom att köra sshI verbose-läge med följande kommando:

ssh -Tvvv [email protected]

arbeta med sökvägar som inte är standard för SSH-nyckelpar

om du använde en icke-standardfilsökväg för ditt GitLab SSH-nyckelpar, kan du felsöka problemet genom att köra ssh konfigurera din SSH-klient för att peka på din GitLab privata SSH-nyckel.

för att göra dessa ändringar, kör följande kommandon:

eval $(ssh-agent -s)ssh-add <path to private SSH key>

spara nu dessa inställningar till filen~/.ssh/config., Två exempelför SSH-nycklar dedikerade till GitLab visas här:

# GitLab.comHost gitlab.com Preferredauthentications publickey IdentityFile ~/.ssh/gitlab_com_rsa# Private GitLab instanceHost gitlab.company.com Preferredauthentications publickey IdentityFile ~/.ssh/example_com_rsa

offentliga SSH-nycklar måste vara unika för GitLab, eftersom de binder till ditt konto.Din SSH-nyckel är den enda identifierare du har när du trycker på kod via SSH, det är därför det behöver unikt karta till en enda användare.,

per-repository SSH keys

om du vill använda olika nycklar beroende på förvaret du arbetar med kan du utfärda följande kommando i ditt förråd:

git config core.sshCommand "ssh -o IdentitiesOnly=yes -i ~/.ssh/private-key-filename-for-this-repository -F /dev/null"

detta använder inte SSH-agenten och kräver minst Git 2.10.

flera konton på en enda GitLab-instans

per-repository-metoden fungerar också för att användaflera konton i en enda GitLab-instans.

alternativt är det möjligt att direkt tilldela alias till värdar i~.ssh/config., SSH och i förlängningen misslyckas Git att logga in om det finns ett IdentityFile som ligger utanför ett Host – block i .ssh/config. Detta beror på hur SSH monterar IdentityFile poster och ändras inte avsetting IdentitiesOnly till yes. IdentityFile poster bör peka på den privata nyckeln för ett SSH-nyckelpar.

notera exempletHost Alias definieras somuser_1.gitlab.com ochuser_2.gitlab.com för effektivitet och transparens., Avancerade konfigurationerär svårare att underhålla; att använda denna typ av alias gör det lättare attförstå när du använder andra verktyg som git remote underkommandon. Sshwould understand any string as a Host alias thus Tanuki1 and Tanuki2,trots att ge mycket lite sammanhang om var de pekar, skulle också fungera.,

kloning av gitlab arkivet ser normalt ut så här:

git clone [email protected]:gitlab-org/gitlab.git

för att klona det för user_1, ersätt gitlab.com med SSH-aliaset user_1.gitlab.com:

git clone git@<user_1.gitlab.com>:gitlab-org/gitlab.git

fixa ett tidigare klonat förråd med kommandot git remote.

exemplet nedan förutsätter att fjärrförvaret är aliaserat somorigin.,

git remote set-url origin git@<user_1.gitlab.com>:gitlab-org/gitlab.git

distribuera nycklar

läs dokumentationen om Distributionstangenter.

program

Eclipse

om du använder EGit kan du lägga till din SSH-nyckel till Eclipse.

SSH på GitLab-servern

GitLab integreras med den systeminstallerade SSH-demonen, vilket betecknar en användare(vanligtvis hetergit) genom vilken alla åtkomstbegäranden hanteras. Usersanslutning till GitLab-servern över SSH identifieras av deras SSH-nyckel insteadof deras användarnamn.,

SSH-klientoperationer som utförs på GitLab-servern körs som denna. Även om det är möjligt att ändra SSH-konfigurationen för den här användaren för att t.ex. tillhandahålla en privat SSH-nyckel för att autentisera dessa förfrågningar av, Stöds inte denna praxis och är starkt avskräckt eftersom den medför betydande säkerhetsrisker.

checkprocessen för GitLab innehåller en check för detta villkor och leder dig till det här avsnittet om din server är konfigurerad så här, till exempel:

Ta bort den anpassade konfigurationen så fort du kan., Dessa anpassningar stöds uttryckligen inte och kan sluta fungera när som helst.

alternativ för Microsoft Windows

om du kör Windows 10 stöder Windows Subsystem for Linux (Wsl) och den senaste WSL 2-versionen installationen av olika Linux-distributioner, som inkluderar Git-och SSH-klienterna.

för nuvarande versioner av Windows kan du också installera Git-och SSH-klienterna withGit för Windows.,

alternativa verktyg inkluderar:

  • Cygwin
  • PuttyGen

felsökning

om du på Git-klon uppmanas till ett lösenord som[email protected]'s password:är något fel med din SSH-inställning.,

  • se till att du skapade ditt SSH-nyckelpar korrekt och lade till den offentliga sshkey i din GitLab-profil
  • försök att manuellt Registrera din privata SSH-nyckel medssh-agent som dokumentedearlier i det här dokumentet
  • försök att felsöka anslutningen genom att körassh -Tv [email protected](ersätterexample.com med din GitLab-domän)