# Подключение к облачному серверу через SSH

Source: https://support.kapsulehost.com/ru-ru/cloud-servers-ssh-connect

SSH предоставляет вам root-оболочку на облачном сервере из вашего собственного терминала, и все детали, необходимые для подключения, отображаются на странице сервера в KPanel, готовые к копированию.

Облачный сервер принадлежит вам полностью, начиная с операционной системы, что означает, что командная строка является местом, где происходит большая часть работы. Это руководство охватывает поиск данных для подключения, подключение с использованием ключа или пароля, правильную настройку ключа, резервную консоль браузера и несколько ошибок, которые являются причиной почти каждого неудачного подключения.

## Поиск данных для подключения

1. Войдите в [KPanel](https://kpanel.kapsulehost.com).
2. Нажмите **Облачные серверы** на левой боковой панели, затем нажмите на ваш сервер.
3. Найдите карточку **Connection**.

Карточка содержит три поля для копирования в буфер обмена:

| Поле | Что это такое |
|---|---|
| **SSH Command** | Полная команда, готовая к вставке в ваш терминал |
| **IPv4 Address** | Общедоступный IPv4 адрес сервера |
| **IPv6 Address** | IPv6 адрес сервера, отображается при наличии |

![Карточка Connection на облачном сервере в KPanel](https://support.kapsulehost.com/help/screenshots/cloud-servers-ssh-connect.902ba66d.webp)

> **Note:** Если карточка показывает "IP address will appear here once provisioning is complete", сервер все еще строится. Подготовка облачного сервера занимает примерно шестьдесят секунд, и страница обновляется после завершения.

## Подключение с использованием SSH ключа

Если вы вставили публичный ключ в поле **SSH Public Key** при заказе сервера, аутентификация с использованием ключа уже настроена и нет пароля для ввода.

1. Скопируйте **SSH Command** из карточки Connection.
2. Вставьте его в ваш терминал и нажмите Enter.

```
ssh root@203.0.113.1
```

Ваш SSH клиент находит соответствующий приватный ключ и аутентифицируется автоматически. Если ваш ключ находится в нестандартном месте, укажите его явно:

```
ssh -i ~/.ssh/my-kapsule-key root@203.0.113.1
```

> **Tip:** Ключи проще и безопаснее, чем пароли. Нечего запоминать, нечего вводить в фишинговый запрос и нечего, что может найти автоматизированная атака по подбору пароля. Если вы все еще используете пароль, создание ключа и его добавление займет примерно две минуты.

### Настройка ключа в первый раз

Создайте пару ключей на вашей машине, а не на сервере:

```
ssh-keygen -t ed25519 -C "your-email@example.com"
```

Нажмите Enter, чтобы принять расположение по умолчанию, и установите парольную фразу при появлении запроса. Теперь у вас есть два файла:

- `~/.ssh/id_ed25519` является вашим **приватным** ключом. Он никогда не покидает вашу машину, и вы никогда не вставляете его никуда.
- `~/.ssh/id_ed25519.pub` является вашим **публичным** ключом. Это тот, который вы предоставляете серверам.

Выведите публичный ключ и скопируйте всю одиночную строку, включая префикс `ssh-ed25519` и завершающий комментарий:

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

При заказе сервера вставьте эту строку в поле **SSH Public Key**. Собственное описание поля говорит об этом четко: "Paste your public key to enable key-based authentication. If left blank, a root password will be emailed to you."

> **Warning:** Никогда не вставляйте содержимое файла без `.pub` в конце. Это ваш приватный ключ, и любой, кто его имеет, может войти как вы на каждый сервер, которому он доверяет. Если вы когда-либо случайно поделитесь приватным ключом, создайте новую пару и замените публичный ключ везде немедленно.

Чтобы добавить ключ на уже имеющийся сервер, подключитесь любым способом, который доступен сегодня, и добавьте строку публичного ключа в `/root/.ssh/authorized_keys`.

## Подключение с использованием пароля

Если вы оставили поле **SSH Public Key** пустым во время заказа, root пароль будет отправлен вам по электронной почте после подготовки сервера.

1. Скопируйте **SSH Command** из карточки Connection.
2. Вставьте его в ваш терминал и нажмите Enter.
3. Введите полученный по электронной почте root пароль при появлении запроса.

Измените этот пароль как можно скорее после входа, используя `passwd`, и добавьте SSH ключ в то же время. Пароль, отправленный по электронной почте, прошел через большее расстояние, чем должны пройти учетные данные.

## Консоль браузера

**Консоль браузера** предоставляет вам терминал внутри KPanel без SSH клиента и без прохождения через порт 22. Это инструмент для момента, когда ваш собственный доступ является тем, что сломалось.

1. Откройте страницу сервера и нажмите **Browser console** в кнопках действия или перейдите на `/cloud-servers/<server-id>/console`.
2. Нажмите **Start console**. KPanel запускает терминал на сервере через HTTPS с одноразовыми учетными данными.
3. **Username** и **Password** отображаются на странице с кнопкой **Copy credentials**. Терминал открывается в самой странице, и ваш браузер может запросить у вас эти учетные данные.
4. Работайте как в любой другой оболочке.

> **Note:** Сеансы консоли автоматически прекращаются после 30 минут. Запуск нового сеанса выдает свежие учетные данные, поэтому ничто не остается прослушивающим после того, как вы закончите. Консоль браузера также требует настроенного домена с HTTPS на сервере, что означает приложение, установленное через панель. На голом сервере консоль сообщит об этом, а не отключится молча.

Используйте консоль, чтобы отменить правило брандмауэра, которое вас заблокировало, сбросить пароль или восстановить конфигурацию `sshd`. После того как вы вернетесь в обычное подключение SSH, она больше не понадобится.

## Сохранение безопасности доступа SSH

Порт 22 всегда открыт на брандмауэре сервера KapsuleHost по умолчанию, поэтому изменение брандмауэра никогда не сможет полностью лишить вас доступа к машине.

Это означает, что безопасность вашей оболочки зависит от того, как вы аутентифицируетесь, а не от скрытия порта. Два предмета выполняют большую часть работы:

- **Используйте ключи, а не пароли.** Тогда угаданный пароль не является способом для входа.
- **Оставьте fail2ban включенным.** Он включен по умолчанию и запрещает адреса, которые многократно не прошли аутентификацию SSH. Вы можете увидеть переключатель на странице **Management** сервера.

[Cloud Server Firewall and Security Management](https://support.kapsulehost.com/ru-ru/cloud-servers-firewall) охватывает оба вопроса, а также пользовательские правила для портов, которые требует ваше приложение.

## Устранение неполадок

**"Connection refused."** Ничего не прослушивает. Проверьте, что сервер показывает **Running** в KPanel, включите его, если он отключен, и используйте консоль браузера, чтобы проверить, что `sshd` работает.

**"Connection timed out."** Трафик не поступает. Убедитесь, что вы используете IPv4 адрес из карточки Connection, и проверьте, блокирует ли ваша собственная сеть исходящий порт 22. Корпоративная или кампусная сеть иногда это делает.

**"Permission denied (publickey)."** Сервер не распознает ваш ключ. Убедитесь, что вы вставили строку `.pub` полностью и без изменений, и что ваш клиент предлагает соответствующий приватный ключ. Добавьте `-v` к команде ssh, чтобы увидеть, какие ключи она попыталась.

**"Permission denied, please try again" на пароле.** Пароль неверен или аутентификация по паролю отключена, потому что вы предоставили ключ. Используйте ключ или консоль браузера.

**"REMOTE HOST IDENTIFICATION HAS CHANGED."** Хостовый ключ сервера отличается от того, который запомнил ваш клиент. Это ожидается после [восстановления](https://support.kapsulehost.com/ru-ru/cloud-servers-rebuild), потому что операционная система была переустановлена. Удалите устаревшую запись для этого IP адреса из файла `known_hosts` и подключитесь заново. Если вы ничего не восстанавливали, остановитесь и свяжитесь с нами перед подключением.

**Я заблокировал себя с помощью правила брандмауэра.** Порт 22 остается открытым, поэтому это необычно, но если правило внутри сервера вас заблокировало, используйте консоль браузера, чтобы удалить его.

Если ни один из вышеперечисленных вариантов не дает вам доступ к оболочке, отправьте письмо на [support@kapsulehost.com](mailto:support@kapsulehost.com) с указанием имени сервера, адреса, с которого вы подключаетесь, и точного текста ошибки.
