- 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.,
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.
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]"
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:
-
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.
- navigera till
eller din lokala GitLab-instansadress och logga in.,
- Välj din avatar i det övre högra hörnet och klicka på Inställningar
- Klicka på SSH-nycklar.
- klistra in den offentliga nyckeln som du kopierade till nyckeltextrutan.
- se till att din nyckel innehåller ett beskrivande namn i textrutan Titel, till exempel work Laptop orHome Workstation.
- inkludera ett (valfritt) utgångsdatum för nyckeln under ”Expires at” – avsnittet. (Infördes i GitLab 12.9.)
- 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.
ssh-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):
ssh -T [email protected]
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.
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 ssh
I 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.
Host
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 med
ssh-agent
som dokumentedearlier i det här dokumentet - försök att felsöka anslutningen genom att köra
ssh -Tv [email protected]
(ersätterexample.com
med din GitLab-domän)