# Połączenie przez SSH

VPS Pro otwiera się Państwa **kluczem SSH**: to para plików utworzona na Państwa komputerze, z której część **publiczną** zapisują Państwo w panelu klienta. Część **prywatna** pozostaje na komputerze i nie jest nikomu przekazywana, także naszemu zespołowi.

## Utworzenie klucza

W systemach macOS, Linux oraz Windows 10 lub 11 (PowerShell lub Terminal) wystarczy jedno polecenie:

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

Proszę zaakceptować proponowaną lokalizację i wybrać hasło chroniące klucz. W folderze `.ssh` Państwa konta pojawią się dwa pliki:

* `id_ed25519`: klucz **prywatny**, który pozostaje u Państwa;
* `id_ed25519.pub`: klucz **publiczny**, ten, który Państwo zapisują. Mieści się w jednym wierszu zaczynającym się od `ssh-ed25519`.

Aby wyświetlić klucz publiczny i go skopiować:

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

## Zapisanie klucza w panelu klienta

1. Otworzyć [my.simafri.com](https://my.simafri.com/), sekcja **VPS**.
2. Na karcie serwera wkleić klucz publiczny w polu **Państwa klucze publiczne, po jednym w wierszu**.
3. Kliknąć **Zapisz klucze**.

Klucz zostaje zainstalowany na serwerze w ciągu minuty, a karta to pokazuje: **Zainstalowane na serwerze**, a po tym data, wraz z odciskiem każdego klucza (`SHA256:...`, takim samym jak ten, który wyświetla `ssh-keygen -lf ~/.ssh/id_ed25519.pub`). Klucz zapisany w trakcie przygotowania serwera zostaje zainstalowany przy jego tworzeniu.

Warto wiedzieć:

* do **10 kluczy** na serwer, po jednym na osobę lub komputer;
* akceptowane typy: **ed25519**, **RSA** o długości co najmniej 2048 bitów, **ECDSA** oraz sprzętowe klucze bezpieczeństwa (`sk-ssh-ed25519`, `sk-ecdsa`); akceptowany jest też format PuTTYgen;
* każde zapisanie **zastępuje** cały zestaw zapisanych kluczy: proszę wkleić wszystkie, które mają zostać;
* klucze zapisują właściciel konta i **menedżerowie**; **operator** może je przeglądać (patrz [Członkowie i role](https://docs.simafri.com/pl/espace-client/membres-et-roles/)).

Klucze zapisane w panelu klienta zajmują własny blok w pliku `/root/.ssh/authorized_keys`, między dwoma wierszami znacznikowymi `my.simafri.com`. Reszta pliku należy do Państwa: klucz dodany tam samodzielnie, poza tym blokiem, pozostaje na miejscu.

## Połączenie

Karta serwera wyświetla polecenie **Połączenie SSH**, gotowe do skopiowania:

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

Port, z zakresu od 22100 do 22999, jest właściwy dla Państwa serwera: proszę używać tego z karty. Zamiast adresu działa też nazwa serwera:

```
ssh -p 22101 root@app.moja-firma.pl
```

W przypadku serwera, którego nazwa należy do Państwa własnej domeny, nazwa ta odpowiada, gdy tylko rekord DNS wskazuje na serwer (patrz [Publikacja strony lub aplikacji](/pl/vps-pro/mettre-en-ligne.md)).

### Przez IPv6

Jeśli Państwa łącze internetowe obsługuje IPv6, mogą Państwo łączyć się z serwerem także bezpośrednio przez jego adres IPv6, wyświetlany na karcie, na standardowym porcie SSH:

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

### Skrót: plik \~/.ssh/config

Aby nie wpisywać za każdym razem portu i adresu, proszę dodać blok do pliku `~/.ssh/config`:

```
Host monvps

    HostName app.moja-firma.pl

    Port 22101

    User root

    IdentityFile ~/.ssh/id_ed25519
```

Od tej chwili wystarczy `ssh monvps`, a ten sam skrót działa w `scp`, `rsync`, `git` i Państwa edytorze.

## Z systemu Windows

Windows 10 i 11 mają wbudowanego klienta OpenSSH: proszę otworzyć PowerShell lub Terminal i wkleić polecenie z karty. Plik skrótów znajduje się w `C:\Users\<nazwa użytkownika>\.ssh\config`.

W **PuTTY** proszę wpisać adres i port z karty w **Session**, użytkownika `root` w **Connection > Data**, a klucz prywatny w formacie `.ppk` w **Connection > SSH > Auth > Credentials**. Klucz publiczny wyświetlany przez PuTTYgen zapisuje się w panelu klienta bez zmian.

## Przesyłanie plików

Z tym samym portem i tym samym kluczem:

```
# jeden plik, na serwer

scp -P 22101 archive.tar.gz root@app.moja-firma.pl:/srv/



# folder, synchronizowany

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

`scp` przyjmuje port z **wielką literą P**. Programy SFTP, takie jak FileZilla czy WinSCP, łączą się przez **SFTP**, z adresem, portem i kluczem prywatnym z Państwa komputera.

## Praca z poziomu edytora

Rozszerzenie **Remote - SSH** do Visual Studio Code otwiera foldery serwera tak, jakby były na Państwa komputerze: odczytuje plik `~/.ssh/config`, wystarczy wybrać `monvps`. Edytory JetBrains oferują to samo połączenie przez **Remote Development**.

## Udostępnienie dostępu współpracownikowi

Są dwa sposoby, zależnie od tego, co chcą Państwo powierzyć tej osobie:

* **dostęp administratora**: proszę dodać jej klucz publiczny obok swojego w polu **Państwa klucze publiczne, po jednym w wierszu**, a następnie kliknąć **Zapisz klucze**;
* **dostęp ograniczony**: proszę utworzyć jej konto na serwerze, z jej własnym kluczem:

```
adduser camille

mkdir -p /home/camille/.ssh

nano /home/camille/.ssh/authorized_keys   # proszę wkleić klucz publiczny tej osoby

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

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

Aby odebrać dostęp, proszę zapisać listę kluczy bez klucza tej osoby albo usunąć jej konto poleceniem `deluser camille`.

## Zastąpienie utraconego klucza

Zmienili Państwo komputer albo klucz prywatny zniknął: proszę utworzyć nowy klucz poleceniem `ssh-keygen -t ed25519`, a następnie zapisać nowy klucz publiczny na karcie, usuwając stary. Zostanie zainstalowany w ciągu minuty i odzyskają Państwo dostęp do serwera.

## Państwa asystent AI

Asystent AI podłączony do Państwa panelu klienta Simafri (serwer MCP `https://mcp.simafri.com/v1/mcp`) odczytuje Państwa serwery, ich stan, adresy i polecenie połączenia oraz zapisuje za Państwa klucze **publiczne**, z uprawnieniami zalogowanej osoby. Klucz prywatny jest tam odrzucany, tak jak w panelu klienta.

## Najczęstsze pytania

### „Permission denied (publickey)”: co sprawdzić?

1. Karta serwera pokazuje **Zainstalowane na serwerze**, a po tym datę.
2. Odcisk wyświetlany na karcie jest odciskiem Państwa klucza: `ssh-keygen -lf ~/.ssh/id_ed25519.pub`.
3. Polecenie wskazuje port z karty i użytkownika `root`.
4. Jeśli klucz ma inną nazwę, należy go wskazać: `ssh -i ~/.ssh/ma_cle -p 22101 root@...`.

Następnie prosimy opisać sytuację wsparciu, podając uruchomione polecenie i otrzymany komunikat: Kompleksowe wsparcie pomoże przywrócić dostęp.

### Połączenie zrywa się, gdy jestem nieaktywny.

Proszę dodać `ServerAliveInterval 60` do swojego bloku w `~/.ssh/config`: komputer będzie podtrzymywał połączenie. Długie polecenie warto uruchomić w `tmux` lub `screen`, które utrzymują je przy życiu nawet po rozłączeniu.

### Panel klienta pokazuje „Ten tekst zawiera klucz PRYWATNY”.

Wklejono plik bez `.pub`. Proszę wkleić zawartość pliku, który kończy się na `.pub`. Jeśli klucz prywatny został przez pomyłkę komuś wysłany, proszę utworzyć nowy i zapisać jego klucz publiczny.

### Czy mogę łączyć się hasłem?

Serwer otwiera się kluczem SSH, najbezpieczniejszą metodą: klucza nie da się odgadnąć i nigdy nie jest on przesyłany. Proszę zapisać jeden klucz na osobę, a każda zachowa własny dostęp.
