# Opret forbindelse med SSH

Din VPS Pro åbnes med din **SSH-nøgle**: et par filer, der oprettes på din computer, og hvis **offentlige** del du lægger ind i dit kundeområde. Den **private** del bliver på din computer og gives ikke til nogen, heller ikke til vores team.

## Opret din nøgle

På macOS, Linux og Windows 10 eller 11 (PowerShell eller Terminal) er det én enkelt kommando:

```
ssh-keygen -t ed25519
```

Accepter den foreslåede placering, og vælg en adgangssætning til at beskytte nøglen. Der oprettes to filer i mappen `.ssh` på din brugerkonto:

* `id_ed25519`: din **private** nøgle, som bliver hos dig;
* `id_ed25519.pub`: din **offentlige** nøgle, den du lægger ind. Den fylder én linje, der begynder med `ssh-ed25519`.

Sådan viser du den offentlige nøgle og kopierer den:

```
cat ~/.ssh/id_ed25519.pub
```

## Læg din nøgle ind i kundeområdet

1. Åbn [my.simafri.com](https://my.simafri.com/), afsnittet **VPS**.
2. Indsæt din offentlige nøgle i **Dine offentlige nøgler, én pr. linje** på din servers kort.
3. Klik på **Gem nøglerne**.

Din nøgle lægges på serveren inden for et minut, og kortet viser det: **Lagt på serveren den** efterfulgt af datoen, med hver nøgles fingeraftryk (`SHA256:...`, det samme, som `ssh-keygen -lf ~/.ssh/id_ed25519.pub` viser). Lægger du nøglen ind, mens serveren klargøres, lægges den på, når serveren oprettes.

Godt at vide:

* op til **10 nøgler** pr. server, én pr. person eller pr. computer;
* accepterede typer: **ed25519**, **RSA** på mindst 2048 bit, **ECDSA** og hardwaresikkerhedsnøgler (`sk-ssh-ed25519`, `sk-ecdsa`); PuTTYgen-formatet accepteres også;
* hver gang du gemmer, **erstattes** alle de indlagte nøgler: indsæt alle dem, du vil beholde;
* kontoens ejer og **forvalterne** lægger nøglerne ind; en **operatør** kan se dem (se [Medlemmer og roller](https://docs.simafri.com/dk/espace-client/membres-et-roles/)).

Nøglerne fra kundeområdet har deres egen blok i filen `/root/.ssh/authorized_keys`, mellem to markeringslinjer `my.simafri.com`. Resten af filen er din: en nøgle, du selv tilføjer uden for denne blok, bliver, hvor den er.

## Opret forbindelse

Din servers kort viser kommandoen **SSH-forbindelse**, klar til at kopiere:

```
ssh -p 22101 root@203.0.113.10
```

Porten, mellem 22100 og 22999, er specifik for din server: brug den, der står på dit kort. Din servers navn virker også i stedet for adressen:

```
ssh -p 22101 root@app.min-virksomhed.dk
```

For en server, hvis navn ligger under dit eget domæne, svarer navnet, så snart din DNS-post peger på din server (se [Sæt et websted eller en applikation online](/dk/vps-pro/mettre-en-ligne.md)).

### Via IPv6

Har din internetforbindelse IPv6, kan du også nå din server direkte på dens IPv6-adresse, som vises på kortet, på den sædvanlige SSH-port:

```
ssh root@2001:db8::101
```

### En genvej: filen \~/.ssh/config

Vil du ikke skrive porten og adressen igen og igen, så tilføj en blok til din fil `~/.ssh/config`:

```
Host minvps

    HostName app.min-virksomhed.dk

    Port 22101

    User root

    IdentityFile ~/.ssh/id_ed25519
```

Derefter er `ssh minvps` nok, og den samme genvej virker for `scp`, `rsync`, `git` og din editor.

## Fra Windows

Windows 10 og 11 har OpenSSH-klienten indbygget: åbn PowerShell eller Terminal, og indsæt kommandoen fra dit kort. Din genvejsfil ligger i `C:\Users\<dit navn>\.ssh\config`.

Med **PuTTY** angiver du adressen og porten fra dit kort under **Session**, brugeren `root` under **Connection > Data** og din private nøgle i `.ppk`-format under **Connection > SSH > Auth > Credentials**. Den offentlige nøgle, som PuTTYgen viser, lægges ind i dit kundeområde, som den er.

## Overfør filer

Med den samme port og den samme nøgle:

```
# en fil, til serveren

scp -P 22101 archive.tar.gz root@app.min-virksomhed.dk:/srv/



# en mappe, synkroniseret

rsync -avz -e "ssh -p 22101" ./build/ root@app.min-virksomhed.dk:/var/www/app/
```

`scp` tager porten med **stort P**. SFTP-programmer som FileZilla eller WinSCP forbinder via **SFTP** med adressen, porten og den private nøgle på din computer.

## Arbejd fra din editor

Udvidelsen **Remote - SSH** til Visual Studio Code åbner mapperne på din server, som om de lå på din computer: den læser din fil `~/.ssh/config`, og du skal blot vælge `minvps`. JetBrains-editorerne tilbyder den samme forbindelse via **Remote Development**.

## Giv en kollega adgang

Der er to måder, afhængigt af hvad du vil betro kollegaen:

* **administratoradgang**: tilføj kollegaens offentlige nøgle ved siden af din egen i **Dine offentlige nøgler, én pr. linje**, og klik derefter på **Gem nøglerne**;
* **begrænset adgang**: opret en konto på serveren til kollegaen, med kollegaens egen nøgle:

```
adduser camille

mkdir -p /home/camille/.ssh

nano /home/camille/.ssh/authorized_keys   # indsæt kollegaens offentlige nøgle

chown -R camille:camille /home/camille/.ssh

chmod 700 /home/camille/.ssh && chmod 600 /home/camille/.ssh/authorized_keys
```

Vil du fjerne en adgang, så gem listen over nøgler uden kollegaens nøgle, eller slet kontoen med `deluser camille`.

## Erstat en mistet nøgle

Har du skiftet computer, eller er din private nøgle forsvundet: opret en ny nøgle med `ssh-keygen -t ed25519`, og læg derefter den nye offentlige nøgle ind på dit kort, mens du fjerner den gamle. Den lægges på inden for et minut, og du har igen adgang til din server.

## Din AI-assistent

En AI-assistent, der er koblet til dit Simafri-kundeområde (MCP-serveren `https://mcp.simafri.com/v1/mcp`), læser dine servere, deres status, deres adresser og deres forbindelseskommando og lægger dine **offentlige** nøgler ind for dig, med den indloggede persons rettigheder. En privat nøgle afvises der, ligesom i kundeområdet.

## Ofte stillede spørgsmål

### »Permission denied (publickey)«: hvad skal jeg kontrollere?

1. Din servers kort viser **Lagt på serveren den** efterfulgt af en dato.
2. Fingeraftrykket på kortet er din nøgles: `ssh-keygen -lf ~/.ssh/id_ed25519.pub`.
3. Din kommando angiver porten fra dit kort og brugeren `root`.
4. Har din nøgle et andet navn, så angiv den: `ssh -i ~/.ssh/min_noegle -p 22101 root@...`.

Beskriv derefter situationen for supporten med den kørte kommando og den modtagne meddelelse: Totalsupport hjælper dig med at få adgangen tilbage.

### Min forbindelse afbrydes, når jeg er inaktiv.

Tilføj `ServerAliveInterval 60` til din blok i `~/.ssh/config`: din computer holder forbindelsen i live. En lang kommando kører du i `tmux` eller `screen`, som holder den i live, selv når du er koblet fra.

### Kundeområdet viser »Denne tekst indeholder en PRIVAT nøgle«.

Du har indsat filen uden `.pub`. Indsæt indholdet af filen, der ender på `.pub`. Er din private nøgle ved en fejl sendt til nogen, så opret en ny, og læg dens offentlige nøgle ind.

### Kan jeg logge ind med en adgangskode?

Din server åbnes med SSH-nøgle, den sikreste metode: en nøgle kan ikke gættes og sendes aldrig rundt. Læg én nøgle ind pr. person, så har hver person sin egen adgang.
