# Povezivanje putem SSH-a

Vaš se VPS Pro otvara vašim **SSH ključem**: parom datoteka izrađenim na vašem računalu, čiji **javni** dio postavljate u korisničkom području. **Privatni** dio ostaje na vašem računalu i ne prosljeđuje se nikome, pa ni našem timu.

## Izrada ključa

Na macOS-u, Linuxu te Windowsima 10 ili 11 (PowerShell ili Terminal) dovoljna je jedna naredba:

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

Prihvatite predloženu lokaciju i odaberite lozinku (passphrase) za zaštitu ključa. U mapi `.ssh` vašeg korisničkog računa pojavljuju se dvije datoteke:

* `id_ed25519`: vaš **privatni** ključ, koji ostaje kod vas;
* `id_ed25519.pub`: vaš **javni** ključ, onaj koji postavljate. Stane u jedan redak koji počinje s `ssh-ed25519`.

Za prikaz javnog ključa i njegovo kopiranje:

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

## Postavljanje ključa u korisničkom području

1. Otvorite [my.simafri.com](https://my.simafri.com/), odjeljak **VPS**.
2. Na kartici svojeg poslužitelja zalijepite svoj javni ključ u polje **Vaši javni ključevi, jedan po retku**.
3. Kliknite **Spremi ključeve**.

Vaš se ključ postavlja na poslužitelj u roku od minute, a kartica to prikazuje: **Postavljeni na poslužitelj** i datum, uz otisak svakog ključa (`SHA256:...`, isti onaj koji prikazuje `ssh-keygen -lf ~/.ssh/id_ed25519.pub`). Ako ga spremite tijekom pripreme poslužitelja, ključ se postavlja pri njegovoj izradi.

Dobro je znati:

* do **10 ključeva** po poslužitelju, jedan po osobi ili po računalu;
* prihvaćene vrste: **ed25519**, **RSA** od najmanje 2048 bitova, **ECDSA** te hardverski sigurnosni ključevi (`sk-ssh-ed25519`, `sk-ecdsa`); prihvaća se i format PuTTYgen;
* svako spremanje **zamjenjuje** sve postavljene ključeve: zalijepite sve koje želite zadržati;
* vlasnik računa i **upravitelji** postavljaju ključeve; **operater** ih pregledava (vidi [Članovi i uloge](https://docs.simafri.com/hr/espace-client/membres-et-roles/)).

Ključevi postavljeni iz korisničkog područja zauzimaju vlastiti blok datoteke `/root/.ssh/authorized_keys`, između dvaju graničnih redaka s oznakom `my.simafri.com`. Ostatak datoteke pripada vama: ključ koji sami dodate, izvan tog bloka, ostaje na mjestu.

## Povezivanje

Kartica vašeg poslužitelja prikazuje naredbu **SSH veza**, spremnu za kopiranje:

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

Port, između 22100 i 22999, svojstven je vašem poslužitelju: preuzmite onaj sa svoje kartice. Umjesto adrese radi i naziv vašeg poslužitelja:

```
ssh -p 22101 root@app.moja-tvrtka.hr
```

Za poslužitelj čiji je naziv pod vašom vlastitom domenom, taj naziv odgovara čim vaš DNS zapis upućuje na vaš poslužitelj (vidi [Objava stranice ili aplikacije](/hr/vps-pro/mettre-en-ligne.md)).

### Putem IPv6

Ako vaša internetska veza ima IPv6, svojem poslužitelju možete pristupiti i izravno putem njegove IPv6 adrese, prikazane na kartici, na uobičajenom SSH portu:

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

### Prečac: datoteka \~/.ssh/config

Da ne biste ponovno upisivali port i adresu, dodajte blok u svoju datoteku `~/.ssh/config`:

```
Host mojvps

    HostName app.moja-tvrtka.hr

    Port 22101

    User root

    IdentityFile ~/.ssh/id_ed25519
```

Nakon toga dovoljno je `ssh mojvps`, a isti prečac služi za `scp`, `rsync`, `git` i vaš uređivač.

## Iz Windowsa

Windowsi 10 i 11 imaju ugrađen klijent OpenSSH: otvorite PowerShell ili Terminal i zalijepite naredbu sa svoje kartice. Vaša se datoteka prečaca nalazi u `C:\Users\<vaše ime>\.ssh\config`.

S **PuTTY-jem** unesite adresu i port sa svoje kartice u **Session**, korisnika `root` u **Connection > Data**, a svoj privatni ključ u formatu `.ppk` u **Connection > SSH > Auth > Credentials**. Javni ključ koji prikazuje PuTTYgen postavlja se takav kakav jest u vaše korisničko područje.

## Prijenos datoteka

S istim portom i istim ključem:

```
# jedna datoteka, prema poslužitelju

scp -P 22101 archive.tar.gz root@app.moja-tvrtka.hr:/srv/



# jedna mapa, sinkronizirana

rsync -avz -e "ssh -p 22101" ./build/ root@app.moja-tvrtka.hr:/var/www/app/
```

`scp` prima port s **velikim slovom P**. SFTP programi poput FileZille ili WinSCP-a povezuju se putem **SFTP-a**, s adresom, portom i privatnim ključem s vašeg računala.

## Rad iz vašeg uređivača

Proširenje **Remote - SSH** za Visual Studio Code otvara mape vašeg poslužitelja kao da su na vašem računalu: čita vašu datoteku `~/.ssh/config`, dovoljno je odabrati `mojvps`. Uređivači JetBrains nude istu vezu putem značajke **Remote Development**.

## Pristup za kolegu

Dva načina, ovisno o tome što mu želite povjeriti:

* **administratorski pristup**: dodajte njegov javni ključ uz svoj u polje **Vaši javni ključevi, jedan po retku**, zatim kliknite **Spremi ključeve**;
* **ograničeni pristup**: izradite mu korisnički račun na poslužitelju, s njegovim vlastitim ključem:

```
adduser marko

mkdir -p /home/marko/.ssh

nano /home/marko/.ssh/authorized_keys   # zalijepite njegov javni ključ

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

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

Za uklanjanje pristupa spremite popis ključeva bez njegova ključa ili izbrišite njegov račun naredbom `deluser marko`.

## Zamjena izgubljenog ključa

Promijenili ste računalo ili je vaš privatni ključ nestao: izradite novi ključ naredbom `ssh-keygen -t ed25519`, zatim postavite novi javni ključ na svoju karticu, uklanjajući stari. Postavlja se u roku od minute i ponovno imate pristup svojem poslužitelju.

## Vaš AI asistent

AI asistent povezan s vašim korisničkim područjem Simafri (MCP poslužitelj `https://mcp.simafri.com/v1/mcp`) čita vaše poslužitelje, njihovo stanje, adrese i naredbu za povezivanje te postavlja vaše **javne** ključeve umjesto vas, s pravima prijavljene osobe. Privatni ključ ondje se odbija, kao i u korisničkom području.

## Česta pitanja

### „Permission denied (publickey)”: što provjeriti?

1. Kartica vašeg poslužitelja prikazuje **Postavljeni na poslužitelj** i datum.
2. Otisak prikazan na kartici odgovara vašem ključu: `ssh-keygen -lf ~/.ssh/id_ed25519.pub`.
3. Vaša naredba navodi port s vaše kartice i korisnika `root`.
4. Ako vaš ključ ima drugi naziv, navedite ga: `ssh -i ~/.ssh/moj_kljuc -p 22101 root@...`.

Zatim opišite situaciju podršci, s pokrenutom naredbom i dobivenom porukom: Cjelovita podrška pomaže vam vratiti pristup.

### Veza mi se prekida tijekom neaktivnosti.

Dodajte `ServerAliveInterval 60` u svoj blok u `~/.ssh/config`: vaše računalo održava vezu. Dugu naredbu pokrenite u `tmux`-u ili `screen`-u, koji je održavaju aktivnom i kad ste odspojeni.

### Korisničko područje javlja „Ovaj tekst sadrži PRIVATNI ključ”.

Zalijepili ste datoteku bez `.pub`. Zalijepite sadržaj datoteke koja završava na `.pub`. Ako je vaš privatni ključ greškom poslan nekome, izradite novi i postavite njegov javni ključ.

### Mogu li se povezati lozinkom?

Vaš se poslužitelj otvara SSH ključem, najsigurnijom metodom: ključ se ne može pogoditi i nikada ne putuje. Postavite po jedan ključ za svaku osobu i svaka zadržava vlastiti pristup.
