Настройка SSH-туннеля для доступа к OpenAI API из недоступной страны

В эпоху блокировок, санкций актуальным становятся пробросы туннелей до определенных сервисов. Расскажу на примере SSH-туннеля для доступа к OpenAI API из России.

Т.е. ваш сервер размещен в стране, где доступ к api.openai.com ограничен, но хотите использовать OpenAI API. Для этого нужно пробросить трафик через внешний сервер с помощью SSH-туннеля. Это позволяет обойти блокировку и отправлять запросы на OpenAI, как будто вы находитесь за границей.

В этой статье пошагово разберём, как это сделать.

Как это работает

Суть идеи:

  • У вас есть локальный сервер в России (назовём его ru_server).
  • Есть зарубежный VPS с доступом к api.openai.com (назовём его VPS_ABROAD).
  • Мы создаём туннель, по которому весь трафик с ru_server на api.openai.com:443 проксируется через VPS_ABROAD.
  • Локальные запросы к 127.0.0.1:8080 на ru_server становятся эквивалентом подключения к api.openai.com:443 с зарубежного сервера.

Ручной запуск SSH-туннеля

Запуск туннеля на ru_server выполняется командой:

Расшифровка:

  • -v — вывод отладочной информации (не обязательно)
  • -N — не выполнять команды, только туннелирование
  • -L 127.0.0.1:8080:api.openai.com:443 — проброс локального порта 8080 на api.openai.com:443

Важно: должен быть настроен доступ по SSH-ключу к openaitunnel@VPS_ABROAD_IP_ADDRESS.

Как видите, вся операция выполняется буквально одной командой. Но нам нужно еще настроить авторизацию по ssh, которая в примере выполняется через учетную запись пользователя openaitunnel.

Создадим пользователя и настроим его на прием авторизации по ssh token.

Настройка VPS_ABROAD

Создание отдельного SSH-пользователя:

Теперь для авторизации (чтобы не вводить и не светить пароль) мы добавим один из публичных ключей пользователя root с ru_server в

на vps_abroad.

Скорее всего, ключ нужно будет создать. Выполним на ru_server для пользователя root:

У вас появятся ключи:

  • приватный ключ: /root/.ssh/id_ed25519
  • публичный ключ: /root/.ssh/id_ed25519.pub

Теперь публичный ключ добавим в authorized_keys юзера openaitunnel на vps_abroad. Это можно сделать вручную, но на самом деле есть специальная утилита ssh-copy-id, которая делает это за нас.

Выполняем на ru_server:

После этих манипуляция, команда установки туннеля не только будет работать, но и перестанет запрашивать пароль для openaitunnel.

Тестирование работы туннеля

Для работы туннеля нужно, чтобы vps_abroad имел доступ к OpenAI. Давайте используем запрос API, выдающий список моделей для теста.

Проверив, что сервер действительно имеет доступ к OpenAI, можно тестировать ru_server (через туннель). Туннель можно открыть в одной сессии, а тест выполнять в другой, чтобы не закрывать туннель.

Если всё настроено верно — вы получите список моделей от OpenAI.

Создание демона с помощью autossh

Чтобы туннель не приходилось запускать вручную, используем autossh и создадим systemd-сервис.

Установка autossh

Файл сервиса /etc/systemd/system/openai-tunnel.service

Активация сервиса

Проверьте статус: если активен — всё готово.


Теперь ваш ru_server может обращаться к OpenAI API как будто он находится за границей, и это работает в фоне автоматически после каждой перезагрузки. Отличное решение для хостинга в РФ при работе с зарубежными API.

Мало букафф? Читайте есчо !

Скрипт слежения за изменениями в less файлах

Декабрь 2, 2018 г.

Lessc не имеет ключа 'слежения', чтобы выполнять перекомпиляцию при изменении less файлов проекта, как например это сделано у sass компилятора. Это весьма не удобно на этапе верстки шаблона из макета. Для отслеживания я установил UNIX утилиту inotify. ...

Читать

Создание архива без сохранения абсолютного пути в UNIX

Февраль 20, 2018 г.

Если вы укажите полный путь архивируемой папки в UNIX, то файлы будут размещены в архиве вместе полным путем. Не всегда это удобно и правильно, зависит от выполняемой задачи. Как отсечь абсолютные пути, оставив только относительные? Для этого ...

Читать

Как правильно добавить строку в crontab

Май 31, 2025 г.

cron — это системный планировщик задач в Linux. Он позволяет запускать команды по расписанию, например: каждые 15 минут отправлять запрос на сайт или запускать скрипт. В статье разберём два способа как правильно добавить новую строку в crontab, на ...

Читать

Выполнение команды от имени другого пользователя

Март 17, 2022 г.

Команда su позволяет выполнить любую операцию от имени существующего пользователя. К примеру от имени пользователя nginx: [crayon-68e632800578a559005305/] Должно вывести nginx, но скорее всего ничего не получится и вы увидите сообщение ...

Читать
 

Комментарии к «Настройка SSH-туннеля для доступа к OpenAI API из недоступной страны»

Понравилась статья? Есть вопросы? - пишите в комментариях.



Комментарий: