Настройка 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.

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

Развертывание бекапов mySQL из консоли unix

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

Как развернуть дамп базы данных mySQL, созданный ранее? Дамп представляет из себя mysql скрипт, в котором последовательно создаются таблицы (CREATE TABLE ...) и, возможно, другие объекты и производиться их наполнение (INSERT INTO ...). Нужно лишь отправить ...

Читать

Арифметические операции в консоли UNIX

Сентябрь 12, 2018 г.

Как произвести в bash/sh простейшие вычисления? Давайте рассмотрим несколько примеров. Операции с целыми числами Пока вас интересуют целочисленные вычисления, вы можете пользоваться командами встроенными в bash. Вот 6 арифметических команд, которые ...

Читать

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

Март 17, 2022 г.

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

Читать

Лишние сетевые интерфейсы в WSL Ubuntu

Февраль 5, 2025 г.

Продолжаю использовать Ubuntu (v22) на WSL 2. Не давно столкнулся с не приятным моментом. Из WSL вдруг перестала быть видимой внешняя сеть, хотя до этого ...

Читать
 

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

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



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