# SSH-yhteyden muodostaminen

VPS Pro -palvelimesi avautuu **SSH-avaimellasi**: tietokoneellasi luotu tiedostopari, jonka **julkisen** osan tallennat asiakasalueellesi. **Yksityinen** osa pysyy tietokoneellasi, eikä sitä luovuteta kenellekään, ei myöskään tiimillemme.

## Avaimen luominen

macOS<!-- -->:ss<!-- -->ä, Linuxissa sekä Windows 10<!-- -->:ss<!-- -->ä ja 11<!-- -->:ss<!-- -->ä (PowerShell tai Windows Terminal) riittää yksi komento:

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

Hyväksy ehdotettu sijainti ja valitse avaimen suojaksi tunnuslause. Tilisi `.ssh`-kansioon ilmestyy kaksi tiedostoa:

* `id_ed25519`: **yksityinen** avaimesi, joka pysyy luonasi;
* `id_ed25519.pub`: **julkinen** avaimesi, jonka tallennat. Se mahtuu yhdelle riville, joka alkaa `ssh-ed25519`.

Näytä julkinen avain ja kopioi se:

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

## Avaimen tallentaminen asiakasalueelle

1. Avaa [my.simafri.com](https://my.simafri.com/) ja osio **VPS**.
2. Liitä palvelimesi kortissa julkinen avaimesi kenttään **Julkiset avaimenne, yksi riviä kohden**.
3. Napsauta **Tallenna avaimet**.

Avaimesi asennetaan palvelimelle minuutin kuluessa, ja kortti ilmoittaa sen: **Asennettu palvelimelle** ja päivämäärä sekä jokaisen avaimen sormenjälki (`SHA256:...`, sama, jonka `ssh-keygen -lf ~/.ssh/id_ed25519.pub` näyttää). Jos tallennat avaimen palvelimen valmistelun aikana, se asennetaan palvelimen luonnin yhteydessä.

Hyvä tietää:

* enintään **10 avainta** palvelinta kohden, yksi henkilöä tai tietokonetta kohden;
* hyväksytyt tyypit: **ed25519**, vähintään 2048-bittinen **RSA**, **ECDSA** sekä laitepohjaiset suojausavaimet (`sk-ssh-ed25519`, `sk-ecdsa`); myös PuTTYgen-muoto hyväksytään;
* jokainen tallennus **korvaa** kaikki tallennetut avaimet: liitä kaikki, jotka haluat säilyttää;
* tilin omistaja ja **hallinnoijat** tallentavat avaimet; **operaattori** näkee ne (katso [Jäsenet ja roolit](https://docs.simafri.com/fi/espace-client/membres-et-roles/)).

Asiakasalueelta tallennetut avaimet ovat omassa lohkossaan tiedostossa `/root/.ssh/authorized_keys`, kahden `my.simafri.com`-merkkirivin välissä. Muu osa tiedostosta on sinun: avain, jonka lisäät sinne itse tämän lohkon ulkopuolelle, pysyy paikallaan.

## Yhteyden muodostaminen

Palvelimesi kortti näyttää komennon **SSH-yhteys** valmiina kopioitavaksi:

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

Portti, joka on 22100<!-- -->:n<!-- --> ja 22999<!-- -->:n<!-- --> välillä, on palvelinkohtainen: käytä kortissasi näkyvää. Palvelimesi nimi toimii myös osoitteen sijaan:

```
ssh -p 22101 root@app.yrityksesi.fi
```

Jos palvelimesi nimi on oman verkkotunnuksesi alla, nimi vastaa heti, kun DNS-tietueesi osoittaa palvelimeesi (katso [Sivuston tai sovelluksen julkaiseminen](/fi/vps-pro/mettre-en-ligne.md)).

### IPv6<!-- -->:lla

Jos internetyhteydessäsi on IPv6, voit ottaa yhteyden palvelimeesi myös suoraan sen kortissa näkyvällä IPv6-osoitteella tavallisessa SSH-portissa:

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

### Pikakuvake: tiedosto \~/.ssh/config

Jottei sinun tarvitse enää kirjoittaa porttia ja osoitetta uudelleen, lisää tiedostoosi `~/.ssh/config` lohko:

```
Host monvps

    HostName app.yrityksesi.fi

    Port 22101

    User root

    IdentityFile ~/.ssh/id_ed25519
```

Sen jälkeen `ssh monvps` riittää, ja samaa pikakuvaketta käyttävät `scp`, `rsync`, `git` ja editorisi.

## Windowsista

Windows 10 ja 11 sisältävät OpenSSH-asiakasohjelman: avaa PowerShell tai Windows Terminal ja liitä kortissasi oleva komento. Pikakuvaketiedostosi on polussa `C:\Users\<nimesi>\.ssh\config`.

Jos käytät ohjelmaa **PuTTY**, syötä kortissasi näkyvä osoite ja portti kohtaan **Session**, käyttäjä `root` kohtaan **Connection > Data** ja `.ppk`-muotoinen yksityinen avaimesi kohtaan **Connection > SSH > Auth > Credentials**. PuTTYgenin näyttämä julkinen avain tallennetaan asiakasalueellesi sellaisenaan.

## Tiedostojen siirtäminen

Samalla portilla ja samalla avaimella:

```
# yksi tiedosto palvelimelle

scp -P 22101 archive.tar.gz root@app.yrityksesi.fi:/srv/



# kansio synkronoituna

rsync -avz -e "ssh -p 22101" ./build/ root@app.yrityksesi.fi:/var/www/app/
```

`scp`:lle<!-- --> portti annetaan **isolla P-kirjaimella**. SFTP-ohjelmat, kuten FileZilla tai WinSCP, muodostavat yhteyden **SFTP**:ll<!-- -->ä osoitteella, portilla ja tietokoneesi yksityisellä avaimella.

## Työskentely editorista

Visual Studio Coden laajennus **Remote - SSH** avaa palvelimesi kansiot ikään kuin ne olisivat tietokoneellasi: se lukee tiedostosi `~/.ssh/config`, joten riittää valita `monvps`. JetBrainsin editorit tarjoavat saman yhteyden toiminnolla **Remote Development**.

## Pääsyn antaminen työtoverille

Kaksi tapaa sen mukaan, mitä haluat uskoa hänelle:

* **ylläpitäjän pääsy**: lisää hänen julkinen avaimensa omasi viereen kenttään **Julkiset avaimenne, yksi riviä kohden** ja napsauta sitten **Tallenna avaimet**;
* **rajattu pääsy**: luo hänelle palvelimelle oma tili hänen omalla avaimellaan:

```
adduser camille

mkdir -p /home/camille/.ssh

nano /home/camille/.ssh/authorized_keys   # liitä hänen julkinen avaimensa

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

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

Pääsyn poistamiseksi tallenna avainluettelo ilman hänen avaintaan tai poista hänen tilinsä komennolla `deluser camille`.

## Kadonneen avaimen korvaaminen

Tietokoneesi on vaihtunut tai yksityinen avaimesi on kadonnut: luo uusi avain komennolla `ssh-keygen -t ed25519` ja tallenna uusi julkinen avain korttiisi poistaen samalla vanhan. Se asennetaan minuutin kuluessa, ja pääset taas palvelimellesi.

## Tekoälyavustajasi

Simafri-asiakasalueeseesi kytketty tekoälyavustaja (MCP-palvelin `https://mcp.simafri.com/v1/mcp`) lukee palvelimesi, niiden tilan, osoitteet ja yhteyskomennon ja tallentaa **julkiset** avaimesi puolestasi kirjautuneen henkilön oikeuksin. Yksityinen avain hylätään siellä, kuten asiakasalueellakin.

## Usein kysytyt kysymykset

### ”Permission denied (publickey)”: mitä tarkistaa?

1. Palvelimesi kortissa lukee **Asennettu palvelimelle** ja päivämäärä.
2. Kortissa näkyvä sormenjälki on avaimesi sormenjälki: `ssh-keygen -lf ~/.ssh/id_ed25519.pub`.
3. Komentosi käyttää kortissasi näkyvää porttia ja käyttäjää `root`.
4. Jos avaimesi nimi on toinen, ilmoita se: `ssh -i ~/.ssh/ma_cle -p 22101 root@...`.

Kuvaile sitten tilanne tuelle ja kerro suorittamasi komento ja saamasi ilmoitus: Kokonaistuki auttaa sinua palauttamaan pääsyn.

### Yhteyteni katkeaa, kun olen toimettomana.

Lisää `ServerAliveInterval 60` lohkoosi tiedostossa `~/.ssh/config`: tietokoneesi pitää yhteyden yllä. Aja pitkä komento `tmux`- tai `screen`-istunnossa, joka pitää sen käynnissä myös yhteyden katkettua.

### Asiakasalue ilmoittaa ”Tämä teksti sisältää YKSITYISEN avaimen”.

Liitit tiedoston, jonka nimessä ei ole `.pub`-päätettä. Liitä `.pub`-päätteisen tiedoston sisältö. Jos yksityinen avaimesi on lähetetty jollekulle vahingossa, luo uusi avain ja tallenna sen julkinen avain.

### Voinko kirjautua salasanalla?

Palvelimesi avautuu SSH-avaimella, joka on turvallisin menetelmä: avainta ei voi arvata, eikä se koskaan liiku verkossa. Tallenna yksi avain henkilöä kohden, niin jokaisella on oma pääsynsä.
