Как настроить обратный SSH туннель с VPS на локальную машину, находящуюся за NAT?

Как настроить обратный SSH тоннель с VPS на файловое хранилище, чтобы иметь возможность управлять закачками через соединение с VPS? Какие конкретные команды и настройки необходимо выполнить на VPS и файловом хранилище для реализации этого?
  • 3 февраля 2024 г. 19:08
Ответы на вопрос 2
Для настройки обратного SSH туннеля с VPS (Virtual Private Server) на локальную машину за NAT, а также на файловое хранилище на локальной машине, вам понадобятся следующие шаги:

1. Разрешите на VPS подключения к портам, которые будут использоваться для обратного туннеля (если есть firewall).

2. На локальной машине (или файловом хранилище, если оно имеет свой интерфейс для настройки SSH) создайте пару ключей SSH (если еще не созданы) для беспарольного подключения к VPS. Можно сделать это с помощью команды:
   ```
   ssh-keygen
   ```
   Затем скопируйте открытый ключ на VPS в `~/.ssh/authorized_keys` пользователя, под которым будет осуществляться подключение.

3. Настройте обратный туннель с локальной машины на VPS. Команда для создания туннеля может выглядеть следующим образом:
   ```
   ssh -R 2222:localhost:22 пользователь@vps-адрес
   ```
   В этом примере `2222` - это порт на VPS, который будет туннелироваться на порт `22` локальной машины (стандартный порт SSH). Замените `пользователь` и `vps-адрес` на реальные имя пользователя и адрес (или доменное имя) VPS.

4. Чтобы этот туннель был постоянным и восстановливался после разрыва соединения, можно использовать утилиту `autossh`:
   ```
   autossh -f -N -R 2222:localhost:22 пользователь@vps-адрес
   ```
   Флаг `-f` отправляет `autossh` в фоновый режим, а `-N` говорит SSH не выполнять удаленные команды.

5. Теперь, чтобы подключиться к файловому хранилищу или другим ресурсам локальной машины, зайдите на VPS и подключитесь через обратный туннель:
   ```
   ssh -p 2222 пользователь_локальной_машины@localhost
   ```

6. В случае, если на файловом хранилище нужен доступ к конкретным сервисам, просто меняйте локальный и удаленный порты в команде выше, чтобы они соответствовали сервисам на локальной машине. Например, если файловое хранилище работает на порту 9090, то обратный туннель будет выглядеть так:
   ```
   ssh -R 9090:localhost:9090 пользователь@vps-адрес
   ```
   Теперь доступ к файловому хранилищу с VPS можно получить через `localhost:9090`.

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