[Документация Yandex Cloud](../../index.md) > [Yandex Compute Cloud](../index.md) > [Практические руководства](index.md) > Создание бастионного хоста

# Создание бастионного хоста


{% note info %}

В [регионе Казахстан](../../overview/concepts/region.md) доступна только [зона доступности](../../overview/concepts/geo-scope.md) `kz1-a`.

{% endnote %}


Если вы когда-нибудь интересовались строительством древних фортификационных сооружений, то слово «бастион» должно быть вам знакомо. Бастионом назывался элемент внешней стены крепости, выступающий за ее основной контур. Как и средневековые крепости, компьютерные сети нуждаются в многоуровневой защите от внешнего вторжения. Роль бастионов в сетях выполняют так называемые бастионные хосты, образующие часть сетевого периметра.

Бастионный хост — это виртуальная машина, которой присваивается публичный IP-адрес для доступа по протоколу [SSH](../../glossary/ssh-keygen.md). Настроив бастионный хост, вы получаете своего рода [джамп-сервер](https://ru.wikipedia.org/wiki/Инсталляционный_сервер), который позволяет установить защищенное соединение с виртуальными машинами, не имеющими публичных IP-адресов. В этом руководстве вы узнаете о том, как можно развернуть бастионный хост и защитить доступ к удаленным виртуальным машинам, расположенным внутри вашего виртуального частного облака.

Таким образом, создание бастионного хоста позволит вам снизить уязвимость серверов в своем виртуальном частном облаке. При этом административные задачи на конкретных серверах будут выполняться в рамках прокси-соединения через бастионный хост по SSH.

Чтобы создать бастионный хост:

1. [Подготовьте облако к работе](#before-you-begin).
1. [Создайте пару ключей SSH](#create-ssh-keys).
1. [Создайте сети](#create-networks).
1. [Создайте группы безопасности](#create-sg).
1. [Зарезервируйте статический публичный IP-адрес](#get-static-ip).
1. [Создайте виртуальную машину для бастионного хоста](#create-bastion-instance).
1. [Протестируйте бастионный хост](#test-bastion).
1. [Добавьте виртуальный сервер во внутренний сегмент бастионного хоста](#add-virtual-server).
1. [Подключитесь к созданной ВМ](#connect-to-instance).

Если созданные ресурсы вам больше не нужны, [удалите их](#clear-out).

![](../../_assets/tutorials/bastion-yc.svg)

## Перед началом работы {#before-you-begin}

Зарегистрируйтесь в Yandex Cloud и создайте [платежный аккаунт](../../billing/concepts/billing-account.md):
1. Перейдите в [консоль управления](https://kz.console.yandex.cloud), затем войдите в Yandex Cloud или зарегистрируйтесь.
1. На странице **[Yandex Cloud Billing](https://kz.console.yandex.cloud/billing)** убедитесь, что у вас подключен платежный аккаунт, и он находится в [статусе](../../billing/concepts/billing-account-statuses.md) `ACTIVE` или `TRIAL_ACTIVE`. Если платежного аккаунта нет, [создайте его](../../billing/quickstart/index.md) и [привяжите](../../billing/operations/pin-cloud.md) к нему облако.

Если у вас есть активный платежный аккаунт, вы можете создать или выбрать [каталог](../../resource-manager/concepts/resources-hierarchy.md#folder), в котором будет работать ваша инфраструктура, на [странице облака](https://kz.console.yandex.cloud/cloud).

[Подробнее об облаках и каталогах](../../resource-manager/concepts/resources-hierarchy.md).

### Необходимые платные ресурсы {#paid-resources}

В стоимость поддержки инфраструктуры входит:

* плата за диски и постоянно запущенные ВМ ([тарифы Yandex Compute Cloud](../pricing.md));
* плата за использование внешнего IP-адреса ([тарифы Yandex Virtual Private Cloud](../../vpc/pricing.md#prices-public-ip)).

## Создайте пару ключей SSH {#create-ssh-keys}

Чтобы подключаться к [виртуальной машине](../concepts/vm.md) по [SSH](../../glossary/ssh-keygen.md), нужна пара ключей: открытый ключ размещается на ВМ, а закрытый ключ хранится у пользователя. Такой способ более безопасен, чем подключение по логину и паролю.

{% note info %}

В публичных образах Linux, предоставляемых Yandex Cloud, возможность подключения по протоколу SSH с использованием логина и пароля по умолчанию отключена.

{% endnote %}

Роутер Cisco Cloud Services Router (CSR) 1000v поддерживает только ключи, сгенерированные по алгоритму RSA.

Чтобы создать пару ключей:

{% list tabs group=operating_system %}

- Linux/macOS {#linux-macos}

  1. Откройте терминал.
  1. Создайте новый ключ с помощью команды `ssh-keygen`:

     ```bash
     ssh-keygen -t rsa -b 2048
     ```

     После выполнения команды вам будет предложено указать имена файлов, в которые будут сохранены ключи, и ввести пароль для закрытого ключа. По умолчанию используется имя `id_rsa`, ключи создаются в директории `~/.ssh`.

     Публичная часть ключа будет сохранена в файле `<имя_ключа>.pub`.

- Windows 10/11 {#windows}

  1. Запустите `cmd.exe` или `powershell.exe`.
  1. Создайте новый ключ с помощью команды `ssh-keygen`:

     ```shell
     ssh-keygen -t rsa -b 2048
     ```

     После выполнения команды вам будет предложено указать имена файлов, в которые будут сохранены ключи, и ввести пароль для закрытого ключа. По умолчанию используется имя `id_rsa`. Ключи создаются в директории `C:\Users\<имя_пользователя>\.ssh\` или `C:\Users\<имя_пользователя>\` в зависимости от интерфейса командной строки.

     Публичная часть ключа будет сохранена в файле с названием `<имя_ключа>.pub`.

- Windows 7/8 {#windows7-8}

  Создайте ключи с помощью приложения PuTTY:
  1. [Скачайте](https://www.putty.org) и установите PuTTY.
  1. Добавьте папку с PuTTY в переменную `PATH`:

      1. Нажмите кнопку **Пуск** и в строке поиска Windows введите **Изменение системных переменных среды**.
      1. Справа снизу нажмите кнопку **Переменные среды...**.
      1. В открывшемся окне найдите параметр `PATH` и нажмите **Изменить**.
      1. Добавьте путь к папке в список.
      1. Нажмите кнопку **ОК**.

  1. Запустите приложение PuTTYgen.
  1. В качестве типа генерируемой пары выберите **RSA** и укажите длину 2048. Нажмите **Generate** и поводите курсором в поле выше до тех пор, пока не закончится создание ключа.

     ![ssh_generate_key](../../_assets/compute/ssh-putty/ssh-generate-key-rsa.png)

  1. В поле **Key passphrase** введите надежный пароль. Повторно введите его в поле ниже.
  1. Нажмите кнопку **Save private key** и сохраните закрытый ключ. Никому не сообщайте ключевую фразу от него.
  1. Сохраните ключ в текстовом файле. Для этого скопируйте открытый ключ из текстового поля в текстовый файл с названием `id_rsa.pub`. Обратите внимание, что ключ должен быть записан **одной строкой** (не должно быть переносов и разрывов строки).

{% endlist %}

{% note warning %}

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

{% endnote %}

## Создайте внешнюю и внутреннюю сети {#create-networks}

### Создайте внешнюю сеть и подсеть {#create-external-network}

{% list tabs group=instructions %}

- Консоль управления {#console}

  1. В [консоли управления](https://kz.console.yandex.cloud) перейдите в каталог, в котором вы создаете инфраструктуру для бастионного хоста.
  1. Перейдите в сервис **Virtual Private Cloud**.
  1. В правом верхнем углу нажмите кнопку **Создать сеть**.
  1. Задайте имя сети: `external-bastion-network`.
  1. Отключите опцию **Создать подсети**.
  1. Нажмите кнопку **Создать сеть**.
  1. Создайте подсеть:

     1. Выберите сеть `external-bastion-network`.
     1. Справа сверху нажмите кнопку ![image](../../_assets/console-icons/nodes-right.svg) **Создать подсеть**.
     1. Укажите параметры подсети:

        * **Имя** — `bastion-external-segment`.
        * **Зона доступности** — `kz1-b`.
        * **CIDR** — `172.16.17.0/28`.

     1. Нажмите кнопку **Создать подсеть**.

{% endlist %}

### Создайте внутреннюю сеть и подсеть {#create-internal-network}

{% list tabs group=instructions %}

- Консоль управления {#console}

  1. В [консоли управления](https://kz.console.yandex.cloud) перейдите в каталог, в котором вы создаете инфраструктуру для бастионного хоста.
  1. Перейдите в сервис **Virtual Private Cloud**.
  1. В правом верхнем углу нажмите кнопку **Создать сеть**.
  1. Задайте имя сети: `internal-bastion-network`.
  1. Отключите опцию **Создать подсети**.
  1. Нажмите кнопку **Создать сеть**.
  1. Создайте подсеть:

     1. Выберите сеть `internal-bastion-network`.
     1. Справа сверху нажмите кнопку ![image](../../_assets/console-icons/nodes-right.svg) **Создать подсеть**.
     1. Укажите параметры подсети:

        * **Имя** — `bastion-internal-segment`.
        * **Зона доступности** — `kz1-b`.
        * **CIDR** — `172.16.16.0/24`.

     1. Нажмите кнопку **Создать подсеть**.

{% endlist %}

## Создайте группы безопасности {#create-sg}

### Создайте группу безопасности бастионного хоста {#create-internet-sg}

Создайте [группу безопасности](../../vpc/concepts/security-groups.md) и настройте правила для входящего трафика на бастионном хосте, чтобы обеспечить к нему доступ из интернета:

{% list tabs group=instructions %}

- Консоль управления {#console}

  1. В [консоли управления](https://kz.console.yandex.cloud) перейдите в каталог, в котором вы создаете инфраструктуру для бастионного хоста.
  1. Перейдите в сервис **Virtual Private Cloud** и выберите сеть `external-bastion-network`.
  1. В меню слева выберите ![image](../../_assets/vpc/security-group.svg) **Группы безопасности**.
  1. Нажмите кнопку **Создать группу безопасности**.
  1. Задайте имя группы безопасности: `secure-bastion-sg`.
  1. В блоке **Правила** перейдите на вкладку **Входящий трафик** и нажмите кнопку **Добавить правило**.
  1. Укажите настройки правила:

     * **Диапазон портов** — `22`.
     * **Протокол** — `TCP`.
     * **Источник** — `CIDR`.
     * **CIDR блоки** — `0.0.0.0/0`.

  1. Нажмите кнопку **Сохранить** в окне создания правила, а затем — в окне создания группы безопасности.

{% endlist %}

### Создайте группу безопасности для внутренних хостов {#create-internal-hosts-sg}

Создайте группу безопасности и настройте правила для входящего трафика, идущего с бастионного хоста на внутренние хосты:

{% list tabs group=instructions %}

- Консоль управления {#console}

  1. В [консоли управления](https://kz.console.yandex.cloud) перейдите в каталог, в котором вы создаете инфраструктуру для бастионного хоста.
  1. Перейдите в сервис **Virtual Private Cloud** и выберите сеть `internal-bastion-network`.
  1. В меню слева выберите ![image](../../_assets/vpc/security-group.svg) **Группы безопасности**.
  1. Нажмите кнопку **Создать группу безопасности**.
  1. Задайте имя группы безопасности: `internal-bastion-sg`.
  1. В блоке **Правила** перейдите на вкладку **Входящий трафик** и нажмите кнопку **Добавить правило**.
  1. Укажите настройки правила:

     * **Диапазон портов** — `22`.
     * **Протокол** — `TCP`.
     * **Источник** — `CIDR`.
     * **CIDR блоки** — `172.16.16.254/32`.

  1. Нажмите кнопку **Сохранить** в окне создания правила.
  1. Перейдите на вкладку **Исходящий трафик** и нажмите кнопку **Добавить правило**.
  1. Укажите настройки правила:

     * **Диапазон портов** — `22`.
     * **Протокол** — `TCP`.
     * **Назначение** — `Группа безопасности`.
     * **Группа безопасности** — `Текущая`.

  1. Нажмите кнопку **Сохранить** в окне создания правила, а затем — в окне создания группы безопасности.

{% endlist %}

## Зарезервируйте статический публичный IP-адрес {#get-static-ip}

Для работы бастионному хосту потребуется статический [публичный IP-адрес](../../vpc/concepts/address.md#public-addresses).

{% list tabs group=instructions %}

- Консоль управления {#console}  

  1. В [консоли управления](https://kz.console.yandex.cloud) перейдите в каталог, в котором вы создаете инфраструктуру для бастионного хоста.
  1. Перейдите в сервис **Virtual Private Cloud**.
  1. На панели слева выберите ![image](../../_assets/vpc/ip-addresses.svg) **Публичные IP-адреса**.
  1. Нажмите кнопку **Зарезервировать публичный IP-адрес**.
  1. В открывшемся окне выберите [зону доступности](../../overview/concepts/geo-scope.md) `kz1-b`.
  1. Нажмите кнопку **Зарезервировать**.
  
{% endlist %}

## Создайте виртуальную машину для бастионного хоста {#create-bastion-instance}

После того как вы создали подсеть и группу безопасности, перейдите к созданию виртуального сервера для бастионного хоста:

{% list tabs group=instructions %}

- Консоль управления {#console}

  1. На странице [каталога](../../resource-manager/concepts/resources-hierarchy.md#folder) в [консоли управления](https://kz.console.yandex.cloud) нажмите кнопку ![image](../../_assets/console-icons/plus.svg) **Создать ресурс** и выберите ![image](../../_assets/console-icons/cpu.svg) **Виртуальная машина**.
  1. В блоке **Образ загрузочного диска** в поле **Поиск продукта** введите `NAT-инстанс на основе Ubuntu 22.04 LTS` и выберите публичный образ [NAT-инстанс на основе Ubuntu 22.04 LTS](https://yandex.cloud/ru-kz/marketplace/products/yc/nat-instance-ubuntu-22-04-lts).
  1. В блоке **Расположение** выберите [зону доступности](../../overview/concepts/geo-scope.md) `kz1-b`.
  1. В блоке **Сетевые настройки**  настройте первый сетевой интерфейс:

      * **Подсеть** — `bastion-external-segment`.
      * **Публичный IP-адрес** — нажмите `Список` и выберите [зарезервированный ранее IP-адрес](#get-static-ip).
      * **Группы безопасности** — `secure-bastion-sg`.

  1. Нажмите **Добавить сетевой интерфейс** и настройте второй сетевой интерфейс:

      * **Подсеть** — `bastion-internal-segment`.
      * **Публичный IP-адрес** — `Без адреса`.
      * **Группы безопасности** — `internal-bastion-sg`.
      * Разверните блок **Дополнительно** и в поле **Внутренний IPv4 адрес** выберите `Вручную`.
      * В появившемся поле для ввода укажите `172.16.16.254`.

      {% note info %}

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

      {% endnote %}

      Публичный IP-адрес указывается только для внешнего сегмента. Для внутреннего сегмента указывается внутренний статический IP-адрес.

  1. В блоке **Доступ** выберите вариант **SSH-ключ** и укажите данные для доступа на ВМ:

      * В поле **Логин** введите имя пользователя: `bastion`.
      * В поле **SSH-ключ** выберите SSH-ключ, сохраненный в вашем профиле [пользователя организации](../../organization/concepts/membership.md).
        
        Если в вашем профиле нет сохраненных SSH-ключей или вы хотите добавить новый ключ:
        
        1. Нажмите кнопку **Добавить ключ**.
        1. Задайте имя SSH-ключа.
        1. Выберите вариант:
        
            * `Ввести вручную` — вставьте содержимое открытого [SSH](../../glossary/ssh-keygen.md)-ключа. Пару SSH-ключей необходимо [создать](../operations/vm-connect/ssh.md#creating-ssh-keys) самостоятельно.
            * `Загрузить из файла` — загрузите открытую часть SSH-ключа. Пару SSH-ключей необходимо создать самостоятельно.
            * `Сгенерировать ключ` — автоматическое создание пары SSH-ключей.
            
              При добавлении сгенерированного SSH-ключа будет создан и загружен архив с парой ключей. В ОС на базе Linux или macOS распакуйте архив в папку `/home/<имя_пользователя>/.ssh`. В ОС Windows распакуйте архив в папку `C:\Users\<имя_пользователя>/.ssh`. Дополнительно вводить открытый ключ в консоли управления не требуется.
        
        1. Нажмите кнопку **Добавить**.
        
        SSH-ключ будет добавлен в ваш профиль пользователя организации. Если в организации [отключена](../../organization/operations/os-login-access.md) возможность добавления пользователями SSH-ключей в свои профили, добавленный открытый SSH-ключ будет сохранен только в профиле пользователя внутри создаваемого ресурса.

  1. В блоке **Общая информация** задайте имя ВМ: `bastion-host`.
  1. Нажмите кнопку **Создать ВМ**.

  Когда серверная ВМ запустится и перейдет в статус **Running**, вы сможете увидеть назначенный ей публичный IP-адрес в поле **Публичный IP-адрес**.

{% endlist %}

## Протестируйте бастионный хост {#test-bastion}

После запуска бастионного хоста попробуйте подключиться к нему через SSH-клиент:

```bash
ssh -i ~/.ssh/<имя_файла_приватного_ключа> bastion@<публичный_IP_адрес_бастионного_хоста>
```

## Добавьте виртуальный сервер во внутренний сегмент бастионного хоста {#add-virtual-server}

Для администрирования ваших серверов добавьте сетевой интерфейс во внутренний сетевой сегмент бастионного хоста — `bastion-internal-segment`.

Если у вас уже создана виртуальная машина, [добавьте](../operations/vm-control/attach-network-interface.md) к ней дополнительный сетевой интерфейс. Если нет — создайте новую машину для тестирования конфигурации бастионного хоста:

{% list tabs group=instructions %}

- Консоль управления {#console}

  1. На странице [каталога](../../resource-manager/concepts/resources-hierarchy.md#folder) в [консоли управления](https://kz.console.yandex.cloud) нажмите кнопку ![image](../../_assets/console-icons/plus.svg) **Создать ресурс** и выберите ![image](../../_assets/console-icons/cpu.svg) **Виртуальная машина**.
  1. В блоке **Образ загрузочного диска** выберите публичный образ с произвольной операционной системой, например [Ubuntu 22.04 LTS](https://yandex.cloud/ru-kz/marketplace/products/yc/ubuntu-22-04-lts).
  1. В блоке **Расположение** выберите [зону доступности](../../overview/concepts/geo-scope.md) `kz1-b`.
  1. В блоке **Сетевые настройки** настройте сетевой интерфейс:

      * **Подсеть** — `bastion-internal-segment`.
      * **Публичный IP-адрес** — `Без адреса`.
      * **Группы безопасности** — `internal-bastion-sg`.
      * Разверните блок **Дополнительно** и в поле **Внутренний IPv4-адрес** выберите `Автоматически`.

  1. В блоке **Доступ** выберите вариант **SSH-ключ** и укажите данные для доступа на ВМ:

      * В поле **Логин** введите имя пользователя: `test`.
      * В поле **SSH-ключ** выберите SSH-ключ, сохраненный в вашем профиле [пользователя организации](../../organization/concepts/membership.md).
        
        Если в вашем профиле нет сохраненных SSH-ключей или вы хотите добавить новый ключ:
        
        1. Нажмите кнопку **Добавить ключ**.
        1. Задайте имя SSH-ключа.
        1. Выберите вариант:
        
            * `Ввести вручную` — вставьте содержимое открытого [SSH](../../glossary/ssh-keygen.md)-ключа. Пару SSH-ключей необходимо [создать](../operations/vm-connect/ssh.md#creating-ssh-keys) самостоятельно.
            * `Загрузить из файла` — загрузите открытую часть SSH-ключа. Пару SSH-ключей необходимо создать самостоятельно.
            * `Сгенерировать ключ` — автоматическое создание пары SSH-ключей.
            
              При добавлении сгенерированного SSH-ключа будет создан и загружен архив с парой ключей. В ОС на базе Linux или macOS распакуйте архив в папку `/home/<имя_пользователя>/.ssh`. В ОС Windows распакуйте архив в папку `C:\Users\<имя_пользователя>/.ssh`. Дополнительно вводить открытый ключ в консоли управления не требуется.
        
        1. Нажмите кнопку **Добавить**.
        
        SSH-ключ будет добавлен в ваш профиль пользователя организации. Если в организации [отключена](../../organization/operations/os-login-access.md) возможность добавления пользователями SSH-ключей в свои профили, добавленный открытый SSH-ключ будет сохранен только в профиле пользователя внутри создаваемого ресурса.

  1. В блоке **Общая информация** задайте имя ВМ: `test-vm`.
  1. Нажмите кнопку **Создать ВМ**.

{% endlist %}

## Подключитесь к созданной ВМ {#connect-to-instance}

Подключаясь к ВМ по протоколу SSH через внутренний IP-адрес, вы будете использовать бастионный хост в роли джамп-хоста.

Для упрощения SSH-доступа и его настройки добавьте параметр `-J` (ProxyJump) в команду SSH:

```bash
ssh -i ~/.ssh/<имя_файла_приватного_ключа> -J bastion@<публичный_IP_адрес_бастионного_хоста> test@<внутренний_IP_адрес_виртуального_сервера>
```

SSH-клиент автоматически подключится к внутреннему серверу.

Флаг `-J` поддерживается в OpenSSH начиная с версии 7.3. В более ранних версиях `-J` недоступен. В таком случае самый безопасный и простой способ — это использовать перенаправление стандартного ввода-вывода (флаг `-W`) для «проброса» соединения через бастионный хост. Например:

```bash
ssh -i ~/.ssh/<имя_файла_приватного_ключа> -o ProxyCommand="ssh -W %h:%p bastion@<публичный_IP_адрес_бастионного_хоста>" test@<внутренний_IP_адрес_виртуального_сервера>
```

## Дополнительные опции подключения {#more-options}

### Использование SSH-агента для подключения через бастионный хост {#using-ssh-agent}

По умолчанию доступ к серверу настраивается только для аутентификации с помощью публичного SSH-ключа. Не рекомендуется хранить ключи на самих бастионных хостах (в особенности без кодовой фразы). Поэтому лучше использовать SSH-агент. В таком случае приватные SSH-ключи будут храниться только на вашем компьютере, и их можно будет безопасно использовать для аутентификации на следующем сервере.

Добавить ключ в аутентификационный агент можно с помощью команды `ssh-add`. Если ключ хранится в файле `~/.ssh/id_rsa`, он будет добавлен автоматически. Вы также можете указать, какой конкретно ключ нужно использовать, при помощи следующей команды:

```bash
ssh-add <путь_к_файлу_ключа>
```

Пользователи macOS могут настроить у себя файл `~/.ssh/config`. Тогда ключи можно будет загрузить в агент при помощи следующей команды:

```bash
AddKeysToAgent yes
```

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

```bash
ssh -A bastion@<публичный_IP_адрес_бастионного_хоста>
```

Пользователи Windows могут использовать агент Pageant и загрузить в него свой файл приватного ключа. Затем, чтобы обеспечить проброс агента, нужно в окне настроек [PuTTY](https://www.chiark.greenend.org.uk/~sgtatham/putty/) выбрать **Соединение** → **SSH** → **Аутентификация**.

### Доступ к сервисам через SSH-туннели {#ssh-tunneling}

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

Основные типы SSH-туннелей — локальные, удаленные и динамические:

* **Локальный** туннель предоставляет открытый порт на локальном интерфейсе обратной связи, который подключается к адресу `IP:порт` на вашем SSH-сервере.

   Например, можно подключить локальный порт 8080 к адресу `IP_адрес_веб_сервера:80`, который доступен с вашего бастионного хоста, а затем в браузере открыть `http://localhost:8080`:

   ```bash
   ssh bastion@<публичный_IP_адрес_бастионного_хоста> -L 8080:<IP_адрес_веб_сервера>:80
   ```

* **Удаленный** туннель работает в обратном, по отношению к локальному туннелю, направлении, открывая локальный порт для подключения к удаленному серверу.
* **Динамический** туннель предоставляет SOCKS-прокси на локальном порту, при этом подключения устанавливаются с удаленного хоста. Например, можно настроить динамический туннель на порту 1080, а затем в браузере указать его как SOCKS-прокси. В итоге вы сможете подключаться ко всем ресурсам, которые доступны с вашего бастионного хоста и находятся в приватной подсети.

   ```bash
   ssh bastion@<публичный_IP_адрес_бастионного_хоста> -D 1080
   ```

Эти методики основаны на простой замене, при которой зачастую требуется VPN-подключение, а также сочетание с подключениями ProxyJump или ProxyCommand.

Пользователи Windows могут настроить туннели через PuTTY, выбрав **Подключение** → **SSH** → **Туннели**.

Для простого установления подключений к сервисам удаленного рабочего стола (Remote Desktop Services, RDS) — т.е. работающим хостам Windows в облаке — можно использовать переадресацию портов (в особенности, локальную) путем установления туннельного подключения на порт 3389 и последующего подключения к `localhost` через RDS-клиент. Если RDS уже ожидает подключения на локальной машине, вы можете выбрать другой порт, как показано в примере:

```bash
ssh bastion@<публичный_IP_адрес_бастионного_хоста> -L 3390:<IP_адрес_Windows_хоста>:3389
```

### Передача файлов {#file-transfers}

Для клиентов и серверов Linux можно настроить протокол [SCP](https://ru.wikipedia.org/wiki/SCP) для безопасной передачи файлов через бастионный хост на внутренние хосты и обратно. Для этого используются те же опции ProxyCommand и ProxyJump, указываемые в командной строке SSH. Например:

```bash
scp -o "ProxyJump bastion@<публичный_IP_адрес_бастионного_хоста>" <имя_файла> bastion@<внутренний_IP_адрес_виртуального_сервера>:<путь_к_файлу>
```

Если вы используете Windows-клиент, то одно из наиболее популярных SCP-приложений на Windows — это [WinSCP](https://winscp.net). Чтобы передать файлы через бастионный хост на удаленную машину Linux, выполните следующие действия:

1. Создайте сеанс подключения к IP-адресу приватного хоста без пароля. Настройте SSH-ключ на машине Linux.
1. В меню навигации слева нажмите **Дополнительно** и выберите **Туннель**.
1. Введите IP-адрес и имя пользователя для вашего бастионного хоста. В поле **Файл закрытого ключа** выберите и установите файл закрытого ключа, который вы будете использовать для аутентификации на бастионном хосте.
1. В меню навигации слева в блоке **SSH** выберите **Аутентификация**.
1. Проверьте, что установлена опция **Разрешить пересылку агента**.
1. Выберите закрытый ключ для аутентификации на приватном хосте.

Такая настройка позволяет осуществлять непосредственную передачу файлов между машиной Windows и приватным хостом Linux. При этом соединение будет защищено бастионным хостом.

В случае хостов Windows, расположенных за бастионом Linux, передачу файлов можно осуществлять при помощи протокола [RDP](https://ru.wikipedia.org/wiki/Remote_Desktop_Protocol) через туннель. Этот метод обеспечивает эффективную и безопасную передачу файлов.

## Как удалить созданные ресурсы {#clear-out}

Чтобы перестать платить за созданные ресурсы:

* [удалите](../operations/vm-control/vm-delete.md) ВМ;
* [удалите](../../vpc/operations/address-delete.md) статический публичный IP-адрес.