# Povezava prek SSH

Vaš VPS Pro se odpre z vašim **ključem SSH**: parom datotek, ustvarjenim na vašem računalniku, katerega **javni** del shranite v svojem uporabniškem okolju. **Zasebni** del ostane na vašem računalniku in ga ne posredujete nikomur, tudi naši ekipi ne.

## Ustvarjanje ključa

V sistemih macOS, Linux ter Windows 10 ali 11 (PowerShell ali Terminal) zadošča en sam ukaz:

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

Sprejmite predlagano mesto in izberite geselno frazo za zaščito ključa. V mapi `.ssh` vašega računa se pojavita dve datoteki:

* `id_ed25519`: vaš **zasebni** ključ, ki ostane pri vas;
* `id_ed25519.pub`: vaš **javni** ključ, tisti, ki ga shranite. Zapisan je v eni vrstici, ki se začne s `ssh-ed25519`.

Za prikaz javnega ključa in njegovo kopiranje:

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

## Shranjevanje ključa v uporabniškem okolju

1. Odprite [my.simafri.com](https://my.simafri.com/), razdelek **VPS**.
2. Na kartici svojega strežnika prilepite javni ključ v polje **Vaši javni ključi, po eden v vrstici**.
3. Kliknite **Shrani ključe**.

Vaš ključ je na strežnik nameščen v minuti, kartica pa to prikaže: **Nameščeni na strežnik**, ki mu sledi datum, s prstnim odtisom vsakega ključa (`SHA256:...`, enakim, kot ga prikaže `ssh-keygen -lf ~/.ssh/id_ed25519.pub`). Če ključ shranite med pripravo strežnika, je nameščen ob njegovem ustvarjanju.

Dobro je vedeti:

* do **10 ključev** na strežnik, po enega za vsako osebo ali vsak računalnik;
* sprejete vrste: **ed25519**, **RSA** z najmanj 2048 biti, **ECDSA** ter strojni varnostni ključi (`sk-ssh-ed25519`, `sk-ecdsa`); sprejeta je tudi oblika PuTTYgen;
* vsako shranjevanje **nadomesti** vse shranjene ključe: prilepite vse, ki jih želite obdržati;
* lastnik računa in **upravitelji** shranjujejo ključe; **operater** si jih ogleda (glejte [Člani in vloge](https://docs.simafri.com/si/espace-client/membres-et-roles/)).

Ključi, shranjeni iz uporabniškega okolja, zasedajo lasten blok v datoteki `/root/.ssh/authorized_keys`, med dvema označevalnima vrsticama `my.simafri.com`. Preostanek datoteke je vaš: ključ, ki ga tja dodate sami, zunaj tega bloka, ostane na mestu.

## Povezovanje

Kartica vašega strežnika prikazuje ukaz **Povezava SSH**, pripravljen za kopiranje:

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

Vrata, med 22100 in 22999, so lastna vašemu strežniku: uporabite tista s svoje kartice. Namesto naslova deluje tudi ime vašega strežnika:

```
ssh -p 22101 root@app.moje-podjetje.si
```

Pri strežniku, katerega ime je pod vašo lastno domeno, se to ime odziva, takoj ko vaš zapis DNS kaže na vaš strežnik (glejte [Objava spletišča ali aplikacije](/si/vps-pro/mettre-en-ligne.md)).

### Prek IPv6

Če ima vaša internetna povezava IPv6, svoj strežnik dosežete tudi neposredno prek njegovega naslova IPv6, prikazanega na kartici, na običajnih vratih SSH:

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

### Bližnjica: datoteka \~/.ssh/config

Da vam vrat in naslova ni treba več vnašati, v datoteko `~/.ssh/config` dodajte blok:

```
Host monvps

    HostName app.moje-podjetje.si

    Port 22101

    User root

    IdentityFile ~/.ssh/id_ed25519
```

Nato zadošča `ssh monvps`, ista bližnjica pa velja za `scp`, `rsync`, `git` in vaš urejevalnik.

## Iz sistema Windows

Windows 10 in 11 vključujeta odjemalec OpenSSH: odprite PowerShell ali Terminal in prilepite ukaz s svoje kartice. Vaša datoteka z bližnjicami je v `C:\Users\<vaše ime>\.ssh\config`.

S programom **PuTTY** vnesite naslov in vrata s svoje kartice v **Session**, uporabnika `root` v **Connection > Data**, svoj zasebni ključ v obliki `.ppk` pa v **Connection > SSH > Auth > Credentials**. Javni ključ, ki ga prikaže PuTTYgen, shranite v svoje uporabniško okolje takšnega, kot je.

## Prenos datotek

Z istimi vrati in istim ključem:

```
# ena datoteka, na strežnik

scp -P 22101 archive.tar.gz root@app.moje-podjetje.si:/srv/



# mapa, sinhronizirana

rsync -avz -e "ssh -p 22101" ./build/ root@app.moje-podjetje.si:/var/www/app/
```

`scp` sprejme vrata z **velikim P**. Programi SFTP, kot sta FileZilla ali WinSCP, se povežejo prek **SFTP**, z naslovom, vrati in zasebnim ključem vašega računalnika.

## Delo iz urejevalnika

Razširitev **Remote - SSH** za Visual Studio Code odpre mape vašega strežnika, kot da bi bile na vašem računalniku: prebere vašo datoteko `~/.ssh/config`, zato zadošča, da izberete `monvps`. Urejevalniki JetBrains ponujajo enako povezavo prek **Remote Development**.

## Dostop za sodelavca

Dva načina, odvisno od tega, kaj mu želite zaupati:

* **skrbniški dostop**: dodajte njegov javni ključ poleg svojega v **Vaši javni ključi, po eden v vrstici**, nato kliknite **Shrani ključe**;
* **omejen dostop**: na strežniku mu ustvarite račun z lastnim ključem:

```
adduser camille

mkdir -p /home/camille/.ssh

nano /home/camille/.ssh/authorized_keys   # prilepite njegov javni ključ

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

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

Za odvzem dostopa shranite seznam ključev brez njegovega ključa ali izbrišite njegov račun z `deluser camille`.

## Zamenjava izgubljenega ključa

Zamenjali ste računalnik ali vaš zasebni ključ je izginil: ustvarite nov ključ z `ssh-keygen -t ed25519`, nato nov javni ključ shranite na svoji kartici in odstranite starega. Nameščen je v minuti in znova imate dostop do svojega strežnika.

## Vaš pomočnik umetne inteligence

Pomočnik umetne inteligence, povezan z vašim uporabniškim okoljem Simafri (strežnik MCP `https://mcp.simafri.com/v1/mcp`), bere vaše strežnike, njihovo stanje, naslove in ukaz za povezavo ter namesto vas shranjuje vaše **javne** ključe, s pravicami prijavljene osebe. Zasebni ključ je tam zavrnjen, tako kot v uporabniškem okolju.

## Pogosta vprašanja

### »Permission denied (publickey)«: kaj preveriti?

1. Kartica vašega strežnika prikazuje **Nameščeni na strežnik**, ki mu sledi datum.
2. Prstni odtis, prikazan na kartici, je prstni odtis vašega ključa: `ssh-keygen -lf ~/.ssh/id_ed25519.pub`.
3. Vaš ukaz res navaja vrata s kartice in uporabnika `root`.
4. Če ima vaš ključ drugo ime, ga navedite: `ssh -i ~/.ssh/ma_cle -p 22101 root@...`.

Nato opišite stanje podpori, z zagnanim ukazom in prejetim sporočilom: Celovita podpora vam pomaga znova vzpostaviti dostop.

### Moja povezava se prekine ob nedejavnosti.

V svoj blok v `~/.ssh/config` dodajte `ServerAliveInterval 60`: vaš računalnik ohranja povezavo. Dolg ukaz zaženite v `tmux` ali `screen`, ki ga ohranita pri življenju tudi po prekinitvi povezave.

### Uporabniško okolje prikazuje »To besedilo vsebuje ZASEBNI ključ«.

Prilepili ste datoteko brez `.pub`. Prilepite vsebino datoteke, ki se konča s `.pub`. Če ste svoj zasebni ključ pomotoma komu poslali, ustvarite novega in shranite njegov javni ključ.

### Ali se lahko povežem z geslom?

Vaš strežnik se odpre s ključem SSH, najvarnejšo metodo: ključa ni mogoče uganiti in nikoli ne potuje. Shranite po en ključ za vsako osebo in vsaka obdrži svoj lasten dostop.
