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

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

GREP - показываем только ближайшее символы от найденного совпадения

Ноябрь 28, 2018 г.

По умолчанию GREP выводит всю строку, где был обнаружен указанный вами шаблон поиска. Для форматированных текстовых файлов это подходит. Но если в поиск попадает минифицированный текстовый или binary файл, то в консоль вываливается неприлично много текста. ...

Читать

Организуем автодеплой изменений из репозитория для проекта на Drupal

Август 23, 2018 г.

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

Читать

Замена строки в файлах

Март 17, 2024 г.

В Unix для замены текстового значения в группе файлов можно использовать утилиту rpl. Установите rpl: [crayon-6956d9c619192272440514/] Для замены тестовой строки выполните команду в файле FILENAME: [crayon-6956d9c61919a532250560/] Подстановка ...

Читать

Скрипт для переименования базы данных в mySQL

Сентябрь 29, 2020 г.

В mySQL нет выражения вроде RENAME DATABASE oldName to newName. Если возникла задача переименовать базу данных, придется выполнить по-этапно: операции создания новой БД, копирования таблиц из старой базы (RENAME TABLE ...) и удаление старой базы. ...

Читать
 

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

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



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