# SSH-nycklar i Git

### Vad är SSH &amp; en SSH-nyckel?

SSH står för Secure Shell och är ett nätverksprotokoll som gör det enklare att ansluta säkert till andra datorer, speciellt över ett osäkert nätverk. En SSH-nyckel är hur man krypterar och avkrypterar informationen, det gör datorn automatiskt. Med SSH-nycklar använder man oftast inte lösenord.

#### **SSH-nycklar** 

En SSH-nyckel innehåller två delar, en privat och en publik del.

##### **Den publika nyckeln (`.pub`)**

Den publika nyckeln är den delen av nycklen du delar ut till andra tjänster som ett "har du den här, kan du förstå mig"-kort. Den här nyckeln kan du fritt sprida till exempelvis Github eller vår egen GitLab för att autentisera dig.

##### **Den privata nyckeln**

<p class="callout danger">**Du ska aldrig dela med dig av den privata delen av din SSH-nyckel eftersom det är den delen av nyckeln som autentiserar att det verkligen är du som ansluter. Du kan identifiera den publika delen av din nycken som du kan dela med dig av för den har `.pub` i slutet.** </p>

### Skapa SSH-nyckelpar i Windows!

1. <span style="font-weight: 400;">Öppna Powershell.</span>
2. <span style="font-weight: 400;">Skriv in `ssh-keygen` och tryck på enter.</span>
3. <span style="font-weight: 400;">Följ sedan instruktionerna tills du ser bilden nedan.</span>

[![image-1620048931052.png](https://info.ssis.nu/uploads/images/gallery/2021-05/scaled-1680-/zXQ6v1W2VSA5YiAo-image-1620048931052.png)](https://info.ssis.nu/uploads/images/gallery/2021-05/zXQ6v1W2VSA5YiAo-image-1620048931052.png)

Nu finns nyckeln <span style="font-weight: 400;">i `.ssh` i din användarmapp. (`C:\Users\[användarnamn]\.ssh`) i filen `id_rs.pub`</span>

### Skapa en SSH-nyckel i Linux!

<p class="callout info">Det finns en mer detaljerad guide [här](https://www.digitalocean.com/community/tutorials/how-to-set-up-ssh-keys-2) som man kan följa, men den är på engelska.</p>

##### Steg 1 - Skapa ett SSH-nyckelpar på den klienten du ska använda

I terminalen i Linux (eller ekvivalent WSL på Windows) skriver du in:

`$ ssh-keygen -t rsa`

Följ sedan instruktionerna som ges.

<p class="callout info">Du behöver inte ange en passphrase såvida du inte vill ha ett extra lager av säkerhet ifall någon skulle komma över din privata SSH-nyckel. Men då skulle du behöva ange din passphrase varje gång du vill koppla dig via SSH med din nyckel.</p>

När du har gått igenom processen kommer du i `~/.ssh` återfinna två filer (eller flera om du har flera nycklar) en `id_rsa.pub` och en `id_rsa` (eller vilket namn du nu valt). Det är innehållet i `id_rsa.pub` som du ska använda ifall du vill autentisera dig emot GitLab.

### Använd SSH-nyckeln i Git

1. <span style="font-weight: 400;">Gå in på </span>[<span style="font-weight: 400;">git.ssis.nu</span>](https://git.ssis.nu)<span style="font-weight: 400;"> och logga in. (Använd ditt Google-konton, elev@stockholmscience.se)</span>
2. <span style="font-weight: 400;">Klicka på “Edit profile”</span>
3. <span style="font-weight: 400;">Klicka på “SSH Keys”</span>
4. <span style="font-weight: 400;">Kopiera allt i filen `id_rsa.pub` som vi hittar i `.ssh` i din användarmapp. `C:\Users\ELEV-TAG\.ssh` eller i `~/.ssh` i Linux</span>
5. Klicka<span style="font-weight: 400;"> sedan på “Add key".</span>
6. <span style="font-weight: 400;">Klistra in nyckeln i rutan och klicka på spara.</span>

<span style="font-weight: 400;">Nu har din nya nyckel registrerats på skolans GitLab och nu kan du klona och skicka upp commits till dina repositories via SSH.</span>