- Vereisten
- Opties voor SSH sleutels
- Beoordelen van bestaande SSH sleutels
- het Genereren van een nieuwe SSH sleutel
- ED25519 SSH sleutels
- SSH-RSA sleutels
- Algemene stappen voor het genereren van een SSH sleutel
- RSA-sleutels en OpenSSH versies van 6,5 naar 7.,8
- het Toevoegen van een SSH sleutel tot uw GitLab account
- Twee-factor Authenticatie (2FA)
- het Testen van dat alles correct is ingesteld
- Werken met niet-standaard SSH-sleutelpaar paden
- Per-repository SSH sleutels
- Meerdere accounts op één GitLab exemplaar
- het Implementeren van toetsen
- Toepassingen
- Eclipse
- SSH op de GitLab server
- Opties voor Microsoft Windows
- Problemen
Git is een gedistribueerd versiebeheersysteem, wat betekent dat u kunt werken lokaal.,Daarnaast kunt u uw wijzigingen ook delen of “pushen” naar andere servers.GitLab ondersteunt veilige communicatie tussen Git en zijn servers met behulp van SSH sleutels.
het SSH-protocol biedt deze beveiliging en stelt u in staat om u aan te melden bij de GitLab remote server zonder elke keer uw gebruikersnaam of wachtwoord op te geven.
deze pagina kan je helpen bij het configureren van beveiligde SSH sleutels die je kunt gebruiken om secureconnecties te helpen met GitLab repositories.
- Als u informatie nodig hebt over het maken van SSH-sleutels, start dan met onze opties voor SSH-sleutels.,
- als je SSH sleutels voor je GitLab account hebt, ben je misschien geïnteresseerd in het werken met niet-standaard SSH sleutelpaar paden.
- als je al een SSH sleutelpaar hebt, kun je naar hoe je een SSH sleutel aan je GitLab account kunt toevoegen.
vereisten
om SSH te ondersteunen, vereist GitLab de installatie van de OpenSSH-client, die vooraf geïnstalleerd is op GNU / Linux en macOS, evenals op Windows 10.
zorg ervoor dat uw systeem SSH versie 6.5 of nieuwer bevat, omdat dat het nu onveilige MD5-handtekeningenschema uitsluit., Het volgende commando retourneert de versie vanssh die op je systeem is geïnstalleerd:
ssh -V
terwijl GitLab geen installatie op Microsoft Windows ondersteunt,kun je SSH sleutels Instellen om Windows als client in te stellen.
opties voor SSH sleutels
GitLab ondersteunt het gebruik van RSA, DSA, ECDSA en ED25519 sleutels.
- GitLab heeft DSA-sleutels verouderd in GitLab 11.0.
- zoals opgemerkt in praktische cryptografie met Go, zijn de beveiligingsproblemen met betrekking tot DSA ook van toepassing op ECDSA.,
daarom richt onze documentatie zich op het gebruik van ED25519 en RSA sleutels.
beheerders kunnen beperken welke sleutels moeten worden toegestaan en hun minimale lengte.
bekijk bestaande SSH sleutels
als je bestaande SSH sleutels hebt, kun je ze misschien gebruiken om verbindingen met GitLabrepositories te beveiligen., Standaard worden SSH-sleutels op Linux-en macOS-systemen opgeslagen in de persoonlijke map van de gebruiker,in de .ssh/
submap. De volgende tabel bevat standaard bestandsnamen voor elk SSH-sleutelalgoritme:
voor aanbevelingen, zie opties voor SSH-sleutels.
genereren van een nieuw SSH sleutelpaar
Als u:
- een ED25519 sleutel wilt aanmaken, lees ED25519 SSH sleutels.
- een RSA-sleutel, lees RSA SSH-sleutels.
ED25519 SSH-sleutels
Het boek Praktische cryptografie met Gosuggest dat ED25519-sleutels veiliger en performanter zijn dan RSA-sleutels.,
omdat OpenSSH 6.5 ED25519 SSH-sleutels in 2014 introduceerde, zouden ze beschikbaar moeten zijn op elk huidig werkend systeem.
U kunt een ed25519-sleutel aanmaken en configureren met het volgende commando:
ssh-keygen -t ed25519 -C "<comment>"
De-C
vlag, met een geciteerde opmerking zoals een e-mailadres, is een optionele manier om uw SSH-sleutels te labelen.
u zult een antwoord zien dat vergelijkbaar is met:
Generating public/private ed25519 key pair.Enter file in which to save the key (/home/user/.ssh/id_ed25519):
voor richtlijnen, ga verder met de algemene stappen.,
RSA SSH-sleutels
Als u RSA-sleutels voor SSH gebruikt, beveelt het US National Institute of Standards and Technology aan dat u een sleutelgrootte van ten minste 2048 gebruikt bits.By standaard maakt het commando ssh-keygen
een 1024-bit RSA-sleutel aan.,
u kunt een RSA-sleutel aanmaken en configureren met het volgende commando, indien gewenst de minimale aanbevolen sleutelgrootte van 2048
:
ssh-keygen -t rsa -b 2048 -C "[email protected]"
de -C
vlag vervangen, met een Geciteerd commentaar zoals een e-mailadres, is een optionele manier om uw SSH sleutels te labelen.
u zult een antwoord zien dat vergelijkbaar is met:
Generating public/private rsa key pair.Enter file in which to save the key (/home/user/.ssh/id_rsa):
voor richtlijnen, ga verder met de algemene stappen.
algemene stappen voor het genereren van een SSH sleutelpaar
of u nu een ED25519 of een RSA sleutel aanmaakt, u bent begonnen met de ssh-keygen
command.At op dit punt ziet u het volgende bericht op de commandoregel (voor ED25519 sleutels):
Generating public/private ed25519 key pair.Enter file in which to save the key (/home/user/.ssh/id_ed25519):
Als u nog geen SSH sleutelpaar hebt en geen implementatiesleutel aan het genereren bent, accepteer dan het voorgestelde bestand en de map. Uw SSH client gebruikt het resulterende SSH sleutelpaar zonder extra configuratie.,
U kunt het nieuwe SSH sleutelpaar ook op een andere locatie opslaan.U kunt de directory en bestandsnaam van uw keuze toewijzen.Je kunt dat SSH sleutelpaar ook toewijzen aan een specifieke host.
na het toewijzen van een bestand om uw SSH-sleutel op te slaan, kunt u een wachtwoordzin instellen voor uw SSH-sleutel:
Enter passphrase (empty for no passphrase):Enter same passphrase again:
indien succesvol, zult u bevestiging zien waar de ssh-keygen
uw identificatie en privésleutel heeft opgeslagen.,
indien nodig kunt u de wachtzin bijwerken met het volgende commando:
ssh-keygen -p -f /path/to/ssh_key
RSA-sleutels en OpenSSH van versies 6.5 tot 7.8
voor OpenSSH 7.8 was de standaard vingerafdruk voor RSA-sleutels gebaseerd op MD5 en is daarom onveilig.
als uw versie van OpenSSH tussen Versie 6.5 en versie 7.8 (inclusief) ligt,voer dan ssh-keygen
uit met de optie -o
om uw persoonlijke SSH-sleutels in het secureOpenSSH-formaat op te slaan.,
als je al een RSA SSH sleutelpaar hebt om te gebruiken met GitLab, overweeg dan om IT te upgraden om het veiliger wachtwoord encryptie formaat te gebruiken. U kunt dit doen met het volgende commando:
ssh-keygen -o -f ~/.ssh/id_rsa
u kunt Ook het genereren van een nieuwe RSA-sleutel met de meer veilige encryptie-formaat met de volgende opdracht:
ssh-keygen -o -t rsa -b 4096 -C "[email protected]"
ssh-keygen
manual pagina, ED25519 al codeert toetsen aan de meer secureOpenSSH formaat.,een SSH sleutel toevoegen aan je GitLab account
nu kun je de SSH sleutel die je hebt aangemaakt naar je GitLab account kopiëren. Volg hiervoor de volgende stappen:
-
Kopieer uw openbare SSH-sleutel naar een locatie die informatie in tekstformaat opslaat.,De volgende opties bewaart informatie voor ED25519 toetsen aan de clipboardfor de bekende besturingssysteem:
macOS:
pbcopy < ~/.ssh/id_ed25519.pub
Linux (vereist dat het
xclip
pakket):xclip -sel clip < ~/.ssh/id_ed25519.pub
Git Bash op Windows:
cat ~/.ssh/id_ed25519.pub | clip
Als u een RSA-sleutel, vervanging dienovereenkomstig.
- Navigeer naar
of uw lokale GitLab instance URL en meld u aan.,
- Selecteer uw avatar in de rechterbovenhoek en klik op Instellingen
- klik op SSH toetsen.
- plak de publieke sleutel die u hebt gekopieerd in het tekstvak sleutel.
- zorg ervoor dat uw sleutel een beschrijvende naam bevat in het tekstvak Titel, zoals Work Laptop of home Workstation.
- vermeld een (optionele) vervaldatum voor de sleutel onder “Expires at” sectie. (Geïntroduceerd in GitLab 12.9.)
- klik op de knop sleutel toevoegen.
SSH sleutels die “verlopen” zijn met behulp van deze procedure zijn geldig in GitLab workflows.,Omdat de door GitLab geconfigureerde vervaldatum niet is opgenomen in de SSH sleutel zelf,kun je nog steeds publieke SSH sleutels exporteren als dat nodig is.
ssh-ed25519
(of ssh-rsa
) en eindigend met uw e-mailadres.twee-factor authenticatie (2FA)
u kunt twee-factor authenticatie (2FA) forGit via SSH instellen.,
testen of alles correct is ingesteld
om te testen of uw SSH-sleutel correct is toegevoegd, voert u het volgende commando uit in uw terminal (vervang gitlab.com
met het domein van uw GitLab-instantie):
ssh -T [email protected]
De eerste keer dat u maak verbinding met GitLab via SSH, je zou de authenticiteit moeten verifiëren van de GitLab host waarmee je verbinding maakt.Bijvoorbeeld bij het verbinden met GitLab.com, antwoord yes
om GitLab toe te voegen.,com to the list of trusted hosts:
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.
eenmaal toegevoegd aan de lijst met bekende hosts, zou je de authenticiteit van de GitLab host opnieuw moeten valideren. Voer het bovenstaande commando opnieuw uit, en je zou een welkom moeten ontvangen bij GitLab, @username
! bericht.,
als het welkomstbericht niet verschijnt, kunt u het probleem oplossen door ssh
In uitgebreide modus uit te voeren met het volgende commando:
ssh -Tvvv [email protected]
werken met niet-standaard SSH sleutelpaar paden
Als u een niet-standaard bestand gebruikt pad voor je GitLab SSH sleutelpaar,configureer je ssh client om naar je GitLab private SSH sleutel te wijzen.
voer de volgende commando ‘ s uit om deze wijzigingen aan te brengen:
eval $(ssh-agent -s)ssh-add <path to private SSH key>
sla deze instellingen nu op in het ~/.ssh/config
bestand., Twee voorbeelden voor SSH-sleutels die aan GitLab zijn gewijd, worden hier getoond:
# GitLab.comHost gitlab.com Preferredauthentications publickey IdentityFile ~/.ssh/gitlab_com_rsa# Private GitLab instanceHost gitlab.company.com Preferredauthentications publickey IdentityFile ~/.ssh/example_com_rsa
publieke SSH-sleutels moeten uniek zijn voor GitLab, omdat ze aan je account binden.Je ssh sleutel is de enige identifier die je hebt bij het pushen van code via SSH, daarom moet het uniek toewijzen aan een enkele gebruiker.,
Per-repository SSH keys
als je verschillende sleutels wilt gebruiken afhankelijk van de repository waar je aan werkt, kun je het volgende commando geven in je repository:
git config core.sshCommand "ssh -o IdentitiesOnly=yes -i ~/.ssh/private-key-filename-for-this-repository -F /dev/null"
Dit gebruikt de SSH Agent niet en vereist op zijn minst git 2.10.
meerdere accounts op een enkele GitLab instantie
de methode per-repository werkt ook voor het gebruik van meerdere accounts binnen een enkele GitLab instantie.
als alternatief is het mogelijk om direct aliassen toe te wijzen aan hosts in~.ssh/config
., SSH en, bij uitbreiding, Git niet inloggen als er een IdentityFile
buiten een Host
blok in .ssh/config
. Dit komt doordat SSH IdentityFile
items assembleert en niet wordt gewijzigd door IdentitiesOnly
in yes
. IdentityFile
items moeten naar de private sleutel van een SSH sleutelpaar wijzen.
Host
aliassen zijn gedefinieerd als user_1.gitlab.com
enuser_2.gitlab.com
voor efficiëntie en transparantie., Geavanceerde configuraties zijn moeilijker te onderhouden; het gebruik van dit type alias maakt het gemakkelijker om te begrijpen wanneer andere tools zoals git remote
sub-commando ‘ s worden gebruikt. SSH zou elke string begrijpen als eenHost
alias dusTanuki1
enTanuki2
,ondanks het geven van zeer weinig context over waar ze wijzen, zou ook werken.,het Klonen van de gitlab
archief normaliter ziet er als volgt uit:
git clone [email protected]:gitlab-org/gitlab.git
Om een kloon van deze user_1
, vervang gitlab.com
met de SSH-alias user_1.gitlab.com
:
git clone git@<user_1.gitlab.com>:gitlab-org/gitlab.git
Correctie van een eerder gekloond repository met behulp van de git remote
commando.
het voorbeeld hieronder gaat ervan uit dat de remote repository een aliased is als origin
.,
git remote set-url origin git@<user_1.gitlab.com>:gitlab-org/gitlab.git
implementeer sleutels
Lees de documentatie over implementeer sleutels.
toepassingen
Eclipse
Als u EGit gebruikt, kunt u uw SSH-sleutel toevoegen aan Eclipse.
SSH op de GitLab-server
GitLab integreert met de op het systeem geïnstalleerde SSH-daemon, waarbij een gebruiker wordt aangewezen(meestal git
) waarmee alle toegangsverzoeken worden afgehandeld. Gebruikers die verbinding maken met de GitLab server via SSH worden geïdentificeerd door hun SSH sleutel in plaats van hun gebruikersnaam.,
SSH-clientbewerkingen die op de GitLab-server worden uitgevoerd, worden als deze gebruiker uitgevoerd. Hoewel het mogelijk is om de SSH configuratie voor deze gebruiker aan te passen om bijvoorbeeld een privé SSH sleutel aan te bieden om deze verzoeken te authenticeren,wordt deze praktijk niet ondersteund en wordt het sterk afgeraden omdat het aanzienlijke veiligheidsrisico ‘ s met zich meebrengt.
het controleproces van GitLab bevat een controle op deze voorwaarde, en leidt je naar deze sectie als je server zo is geconfigureerd, bijvoorbeeld:
verwijder de aangepaste configuratie zodra je dat kunt., Deze aanpassingen worden expliciet niet ondersteund en kunnen op elk moment stoppen met werken.
opties voor Microsoft Windows
Als u Windows 10 gebruikt, ondersteunen het Windows subsysteem voor Linux (WSL) en de nieuwste WSL 2-versie de installatie van verschillende Linux-distributies, waaronder de git-en SSH-clients.
voor de huidige versies van Windows, kun je ook de git en SSH clients installeren metgit voor Windows.,
alternatieve hulpmiddelen zijn:
- Cygwin
- PuttyGen
probleemoplossing
Als u op Git clone om een wachtwoord wordt gevraagd zoals [email protected]'s password:
er is iets mis met uw SSH setup.,
- Zorg dat u gegenereerd uw SSH-sleutel correct en voegde de openbare SSHkey om uw GitLab profiel
- Probeer het handmatig registreren van uw eigen met behulp van SSH sleutel
ssh-agent
als documentedearlier in dit document - het opsporen van de verbinding met
ssh -Tv [email protected]
(vervangenexample.com
met uw GitLab domein)