SSH-nycklar

För att verifiera att ni är ni när ni laddar upp till GitHub så behöver ni sätta upp SSH-nycklar. Detta kan lätt gå fel, men när man väl fixat det så är det klart och inget vi behöver tänka mer på.

#Kolla efter existerande nycklar

Vi börjar med att kolla ifall vi redan har någon SSH-nyckel vi kan använda.

[Aurora](~) $ ls -la ~/.ssh
total 48
drwx------   8 nik  staff   256 28 Aug  2019 .
drwxr-xr-x+ 60 nik  staff  1920 11 Aug 15:06 ..
-rw-r--r--   1 nik  staff    75 28 Aug  2019 config
-rw-------   1 nik  staff  1823 28 Aug  2019 dbwebb
-rw-------   1 nik  staff   396 28 Aug  2019 dbwebb.pub
-rw-------   1 nik  staff  3389 28 Aug  2019 id_rsa
-rw-r--r--   1 nik  staff   748 28 Aug  2019 id_rsa.pub
-rw-r--r--   1 nik  staff  4043 30 Nov  2020 known_hosts

Jag har redan min uppsatt och troligen har ni även dbwebb och dbwebb.pub ifrån när ni satte upp dbwebb-cli. SSH-nycklar består utav två delar, en privat, t.ex dbwebb och en publik dbwebb.pub. Den privata är den del som ni använder för att säga att ni är ni, se det som en nyckel. Den publika delen, dbwebb.pub är den som ni delar med er av till tjänsten ni ska komma åt.

Det vi letar eftar efter är en id_rsa.pub/id_ecdsa.pub/id_ed25519.pub. Troligen har ni ingen sån än, så vi går vidare och skapar det.

#Skapa nyckeln

I terminalen så kör vi följande kodrad för att generera en ny nyckel:

$ ssh-keygen -t ed25519 -C "your_email@example.com"

Det borde ge er följande output:

> Generating public/private ed25519 key pair.
# MacOS
> Enter a file in which to save the key (/Users/you/.ssh/id_ed25519): [Press enter]
# Linux/WSL/Cygwin
> Enter a file in which to save the key (/home/you/.ssh/id_ed25519): [Press enter]

Ni kommer även få en promt att sätta lösenord på er nyckel. Här sätter ni ett lösenord om ni vill, jag brukar inte ha ett lösenord för snabba på flödet.

> Enter passphrase (empty for no passphrase): [Type a passphrase]
> Enter same passphrase again: [Type passphrase again]

Nu bör det ha skapats en nyckel, så om vi kör kommandot ifrån innan så kan vi se ifall det dykt upp:

$ ls -la ~/.ssh

#Använd nyckeln

Nu ska vi lägga till så vi kan använda nyckeln. Detta gör vi genom att lägga till nyckeln i vår ssh-agent som håller koll på nycklarna åt oss.

Vi startar ssh-agent så den körs i bakgrunden:

$ eval "$(ssh-agent -s)"
> Agent pid 59566

Linux/WSL/Cygwin

I Linux/WSL/Cygwin så behöver vi bara lägga till vår SSH-nyckel till ssh-agent, på följande sätt:

ssh-add ~/.ssh/id_ed25519

#MacOS

På MacOS är det lite mer arbete, men det löser vi snabbt. Vi behöver kolla om ~/.ssh/config finns och om inte, skapa den.

$ open ~/.ssh/config
> The file /Users/you/.ssh/config does not exist.

Om den inte finns, skapa den med följande kommando:

$ touch ~/.ssh/config

Notis: Lägg märke till skillnaden mellan om du kör med eller utan lösenord på din nyckel i nedanstående stycke.

Öppna filen med valfri editor (atom ~/.ssh/config/code ~/.ssh/config) och lägg till följande om du kör med lösenord:

Host *
  AddKeysToAgent yes
  UseKeychain yes
  IdentityFile ~/.ssh/id_ed25519

Eller följande om du kör utan lösenord:

Host *
  AddKeysToAgent yes
  IdentityFile ~/.ssh/id_ed25519

Vi lägger till nyckeln till vår ssh-agent:

# Om du kör med lösenord på din nyckel
$ ssh-add -K ~/.ssh/id_ed25519
# Om du kör utan lösenord på din nyckel
$ ssh-add ~/.ssh/id_ed25519

#Revision history

  • 2021-08-11: (A, nik) Första versionen.

Document source.