# Свързване чрез SSH

Вашият VPS Pro се отваря с вашия **SSH ключ**: двойка файлове, създадени на компютъра ви, чиято **публична** част качвате в клиентския си портал. **Частната** част остава на компютъра ви и не се предава на никого, включително на нашия екип.

## Създаване на ключа

На macOS, Linux и Windows 10 или 11 (PowerShell или Terminal) е достатъчна една команда:

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

Приемете предложеното място и изберете парола (passphrase), която да защитава ключа. В папката `.ssh` на вашия потребителски акаунт се появяват два файла:

* `id_ed25519`: вашият **частен** ключ, който остава у вас;
* `id_ed25519.pub`: вашият **публичен** ключ, този, който качвате. Той се събира на един ред, който започва с `ssh-ed25519`.

За да покажете публичния ключ и да го копирате:

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

## Качване на ключа в клиентския портал

1. Отворете [my.simafri.com](https://my.simafri.com/), раздел **VPS**.
2. В картата на сървъра си поставете публичния си ключ в полето **Вашите публични ключове, по един на ред**.
3. Натиснете **Запазване на ключовете**.

Ключът ви се инсталира на сървъра до минута и картата го показва: **Инсталирани на сървъра на**, следвано от датата, с отпечатъка на всеки ключ (`SHA256:...`, същият като този, който показва `ssh-keygen -lf ~/.ssh/id_ed25519.pub`). Ако го качите по време на подготовката на сървъра, ключът се инсталира при създаването му.

Добре е да знаете:

* до **10 ключа** на сървър, по един за всеки човек или компютър;
* приемани типове: **ed25519**, **RSA** от поне 2048 бита, **ECDSA**, както и хардуерни ключове за сигурност (`sk-ssh-ed25519`, `sk-ecdsa`); форматът на PuTTYgen също се приема;
* всяко запазване **заменя** всички качени ключове: поставете всички, които искате да запазите;
* собственикът на акаунта и **мениджърите** качват ключовете; **операторът** ги преглежда (вижте [Членове и роли](https://docs.simafri.com/bg/espace-client/membres-et-roles/)).

Ключовете, качени от клиентския портал, заемат собствен блок във файла `/root/.ssh/authorized_keys`, между два маркерни реда `my.simafri.com`. Останалата част от файла е ваша: ключ, който добавите сами извън този блок, остава на мястото си.

## Свързване

Картата на сървъра ви показва командата **SSH връзка**, готова за копиране:

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

Портът, между 22100 и 22999, е специфичен за вашия сървър: използвайте този от картата си. Името на сървъра ви също работи вместо адреса:

```
ssh -p 22101 root@app.vashatafirma.bg
```

За сървър, чието име е под собствения ви домейн, това име отговаря веднага щом DNS записът ви сочи към сървъра ви (вижте [Пускане онлайн на сайт или приложение](/bg/vps-pro/mettre-en-ligne.md)).

### През IPv6

Ако интернет връзката ви поддържа IPv6, можете да се свържете със сървъра си и директно през неговия IPv6 адрес, показан в картата, на обичайния SSH порт:

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

### Пряк път: файлът \~/.ssh/config

За да не въвеждате отново порта и адреса, добавете блок във файла си `~/.ssh/config`:

```
Host monvps

    HostName app.vashatafirma.bg

    Port 22101

    User root

    IdentityFile ~/.ssh/id_ed25519
```

След това е достатъчно `ssh monvps`, а същият пряк път служи за `scp`, `rsync`, `git` и вашия редактор.

## От Windows

Windows 10 и 11 включват клиента OpenSSH: отворете PowerShell или Terminal и поставете командата от картата си. Файлът ви с преки пътища се намира в `C:\Users\<вашето име>\.ssh\config`.

С **PuTTY** въведете адреса и порта от картата си в **Session**, потребителя `root` в **Connection > Data** и частния си ключ във формат `.ppk` в **Connection > SSH > Auth > Credentials**. Публичният ключ, показан от PuTTYgen, се качва в клиентския ви портал такъв, какъвто е.

## Прехвърляне на файлове

Със същия порт и същия ключ:

```
# един файл, към сървъра

scp -P 22101 archive.tar.gz root@app.vashatafirma.bg:/srv/



# една папка, синхронизирана

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

`scp` приема порта с **главно P**. SFTP програмите като FileZilla или WinSCP се свързват по **SFTP**, с адреса, порта и частния ключ от вашия компютър.

## Работа от вашия редактор

Разширението **Remote - SSH** на Visual Studio Code отваря папките на сървъра ви, сякаш са на компютъра ви: то чете файла ви `~/.ssh/config` и е достатъчно да изберете `monvps`. Редакторите на JetBrains предлагат същата връзка чрез **Remote Development**.

## Достъп за колега

Два начина, според това, което искате да му поверите:

* **администраторски достъп**: добавете неговия публичен ключ до вашия в полето **Вашите публични ключове, по един на ред**, след това **Запазване на ключовете**;
* **ограничен достъп**: създайте му акаунт на сървъра, със собствен ключ:

```
adduser camille

mkdir -p /home/camille/.ssh

nano /home/camille/.ssh/authorized_keys   # поставете неговия публичен ключ

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

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

За да отнемете достъп, запазете списъка с ключове без неговия или изтрийте акаунта му с `deluser camille`.

## Замяна на изгубен ключ

Компютърът ви е сменен или частният ви ключ е изчезнал: създайте нов ключ с `ssh-keygen -t ed25519`, след това качете новия публичен ключ в картата си, като премахнете стария. Той се инсталира до минута и отново имате достъп до сървъра си.

## Вашият AI асистент

AI асистент, свързан с клиентския ви портал в Simafri (MCP сървър `https://mcp.simafri.com/v1/mcp`), чете сървърите ви, състоянието им, адресите им и командата им за връзка и качва вашите **публични** ключове вместо вас, с правата на влезлия потребител. Частен ключ там се отхвърля, както в клиентския портал.

## Често задавани въпроси

### „Permission denied (publickey)“: какво да проверя?

1. Картата на сървъра ви показва **Инсталирани на сървъра на**, следвано от дата.
2. Отпечатъкът, показан в картата, е този на вашия ключ: `ssh-keygen -lf ~/.ssh/id_ed25519.pub`.
3. Командата ви посочва порта от картата ви и потребителя `root`.
4. Ако ключът ви има друго име, посочете го: `ssh -i ~/.ssh/ma_cle -p 22101 root@...`.

След това опишете ситуацията на поддръжката, с изпълнената команда и полученото съобщение: Цялостната поддръжка ще ви помогне да възстановите достъпа.

### Връзката ми прекъсва, когато не съм активен.

Добавете `ServerAliveInterval 60` към блока си в `~/.ssh/config`: компютърът ви поддържа връзката. За дълга команда я стартирайте в `tmux` или `screen`, които я поддържат жива дори след прекъсване на връзката.

### Клиентският портал показва „Този текст съдържа ЧАСТЕН ключ“.

Поставили сте файла без `.pub`. Поставете съдържанието на файла, който завършва на `.pub`. Ако частният ви ключ е бил изпратен на някого по погрешка, създайте нов и качете неговия публичен ключ.

### Мога ли да се свързвам с парола?

Сървърът ви се отваря със SSH ключ, най-сигурният метод: ключът не може да бъде отгатнат и никога не пътува. Качете по един ключ за всеки човек и всеки запазва собствения си достъп.
