# Cursor из РФ на Windows — туннель через прокси ru.hunab.app Пошаговая инструкция для тех, кто впервые настраивает Cursor за пределами «обычного» интернета. Все действия выполняются на компьютере Windows. --- ## Зачем это нужно В России Cursor иногда выдаёт ошибку **PING timed out**: связь с серверами Cursor обрывается или не устанавливается. Чтобы обойти это, трафик Cursor пускают через **прокси-сервер** ru.hunab.app (149.154.64.19). С вашего Windows до этого сервера создаётся зашифрованный **туннель** по SSH. Cursor тогда подключается к интернету не напрямую, а через этот туннель — и ошибка пропадает. **Что вы сделаете по шагам:** 1) проверите/установите программу для туннеля (OpenSSH) и ключ доступа к прокси; 2) запустите туннель (одна команда или скрипт); 3) настроите Cursor так, чтобы он использовал этот туннель; 4) при желании настроите автозапуск туннеля при входе в Windows. --- ## Небольшой словарик | Термин | По-простому | |--------|-------------| | **Туннель (SOCKS)** | Канал «ваш компьютер → прокси-сервер». Весь трафик Cursor к интернету идёт через этот канал. | | **Порт 10809** | Номер «входа» на вашем же компьютере. Cursor подключается к `127.0.0.1:10809` — то есть к себе же, но к программе туннеля, которая пересылает данные на прокси. | | **PowerShell** | Программа в Windows для ввода текстовых команд. Открыть: поиск в Пуске «PowerShell» или Win+X → «Windows PowerShell». | | **%USERPROFILE%** | Папка вашего пользователя Windows, например `C:\Users\Иван`. В PowerShell то же: `$env:USERPROFILE`. | | **Корень репо** | Папка, в которой лежит проект local_machine (внутри есть папки `docs`, `scripts` и т.д.). | --- ## Что нужно до начала - **SSH-ключ** уже установлен на Windows и проверен (подключение к ahau@149.154.64.19 без пароля). Если ещё нет — сначала сделайте по инструкции [WINDOWS_SSH_KEY_INSTALL.md](./WINDOWS_SSH_KEY_INSTALL.md). - **Cursor** установлен на Windows. - Настроено **подключение к интернету** (туннель будет идти через него до прокси). --- ## Содержание 1. [Шаг 1: Проверить OpenSSH и ключ](#-шаг-1-проверить-openssh-и-ключ) 2. [Шаг 2: Запустить туннель](#-шаг-2-запустить-туннель) 3. [Шаг 3: Настроить Cursor](#-шаг-3-настроить-cursor) 4. [Порядок работы каждый раз](#-порядок-работы-каждый-раз) 5. [Автозапуск туннеля при входе в Windows](#-автозапуск-туннеля-при-входе-в-windows) 6. [Если что-то не работает](#-если-что-то-не-работает) --- ## Шаг 1: Проверить OpenSSH и ключ ### 1.1 Открыть PowerShell - Нажмите клавишу **Win** (или кнопку «Пуск») и начните вводить **PowerShell**. - Выберите **Windows PowerShell** (лучше не «от имени администратора», если не требуется). Откроется синее окно с текстом вроде `PS C:\Users\ВашеИмя>`. В нём вы будете вводить команды. ### 1.2 Проверить, установлен ли OpenSSH Введите команду и нажмите Enter: ```powershell ssh -V ``` **Хороший результат:** появляется строка с версией, например `OpenSSH_for_Windows_8.1` или похоже. **Если пишет «не распознано» или «command not found»:** Нужно установить клиент OpenSSH: 1. Откройте **Параметры Windows** (Win+I). 2. Зайдите в **Приложения** → **Дополнительные компоненты** (или «Опциональные компоненты»). 3. Нажмите **Добавить компонент**. 4. Найдите в списке **OpenSSH-клиент** и нажмите **Установить**. После установки закройте и снова откройте PowerShell и снова выполните `ssh -V`. ### 1.3 Убедиться, что ключ на месте и работает Ключ должен лежать в папке вашего пользователя, в подпапке `.ssh`, с именем `id_ed25519`. То есть полный путь: `C:\Users\**ВашеИмя**\.ssh\id_ed25519` Проверка одной командой (скопируйте целиком и вставьте в PowerShell): ```powershell ssh -i $env:USERPROFILE\.ssh\id_ed25519 ahau@149.154.64.19 "echo OK" ``` При первом запуске может спросить про доверие хосту — введите **yes**. **Ожидаемый результат:** в следующей строке выводится **OK**, пароль не запрашивается. Если получили **OK** — переходите к [Шагу 2](#-шаг-2-запустить-туннель). Если ошибка (например, «Permission denied», «No such file») — вернитесь к [WINDOWS_SSH_KEY_INSTALL.md](./WINDOWS_SSH_KEY_INSTALL.md) и доведите установку ключа до конца. --- ## Шаг 2: Запустить туннель Туннель — это программа, которая держит соединение с прокси и «слушает» на вашем компьютере порт 10809. Cursor потом будет подключаться к этому порту. Окно, в котором запущен туннель, **лучше не закрывать** (можно свернуть). ### Вариант A: Запуск скриптом (если у вас есть папка с репо local_machine) 1. Откройте PowerShell. 2. Перейдите в **корень репо** (папка, где лежат `docs`, `scripts`). Пример: ```powershell cd C:\Users\ВашеИмя\code\local_machine ``` Подставьте свой путь к папке проекта. 3. Разрешить выполнение скриптов (достаточно один раз): ```powershell Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned ``` На вопрос ответьте **Y**. 4. Запустите туннель: ```powershell .\docs\cursor\scripts\cursor-socks-tunnel.ps1 start ``` 5. **Ожидаемый вывод:** `... -> telegram-socks-via-do (DO exit)` — только цепочка **Mac→RU→DO**; если **hsites-ahau** недоступен, скрипт завершится с ошибкой (прямой Mac→DO не поднимается). Нужен `Host telegram-socks-via-do` в `~/.ssh/config`, см. [PROXY_GUIDE.md](./PROXY_GUIDE.md). Только выход с RU: `$env:CURSOR_SOCKS_VIA_DO="0"; .\docs\cursor\scripts\cursor-socks-tunnel.ps1 start`. Окно можно свернуть. Проверить, что туннель работает: в **другом** окне PowerShell выполните: ```powershell .\docs\cursor\scripts\cursor-socks-tunnel.ps1 status ``` Должно написать, что SOCKS слушает на порту 10809. Остановить туннель (когда не нужен): ```powershell .\docs\cursor\scripts\cursor-socks-tunnel.ps1 stop ``` ### Вариант B: Запуск одной командой (без скрипта) 1. Откройте PowerShell. 2. Выход через **DO** (как скрипт по умолчанию): ```powershell ssh -D 10809 -o ServerAliveInterval=60 -o ServerAliveCountMax=4 telegram-socks-via-do ``` Только **RU** (без DO в цепочке выхода): ```powershell ssh -D 10809 -o ServerAliveInterval=30 -o ServerAliveCountMax=6 ahau@149.154.64.19 ``` 3. При первом запуске может спросить про доверие хосту — введите **yes**. Пароль спрашивать не должно (работает ключ). 4. **Окно не закрывайте** — пока оно открыто, туннель работает. В заголовке окна может ничего не меняться — это нормально. Можно свернуть окно. Проверка: откройте **второе** окно PowerShell и выполните: ```powershell netstat -an | findstr "10809" ``` Должна появиться строка, где есть `127.0.0.1` и `10809` и состояние **LISTENING**. Чтобы остановить туннель — закройте то окно PowerShell, в котором была запущена команда `ssh -D 10809 ...`. --- ## Шаг 3: Настроить Cursor Нужно один раз сказать Cursor использовать туннель как прокси. 1. Откройте **Cursor**. 2. Откройте настройки: - либо меню **File** → **Preferences** → **Settings** (или **Файл** → **Параметры** → **Настройки**); - либо нажмите **Ctrl+,** (запятая). 3. Вверху в поиске настроек введите: **proxy**. 4. Найдите пункт **Http: Proxy** (или **Http: Proxy Support** и т.п.) и в поле значения введите **ровно**: ```text socks5://127.0.0.1:10809 ``` 5. Если есть отдельное поле **Https: Proxy** — введите туда то же самое: `socks5://127.0.0.1:10809`. 6. Убедитесь, что **Cursor > General: Disable Http2** выключен (галочка снята). HTTP/2 должен быть включён — так Cursor будет стабильнее работать через туннель. **Альтернатива через JSON-настройки:** - В Cursor откройте палитру команд: **Ctrl+Shift+P**. - Введите: **Open User Settings (JSON)** и выберите этот пункт. - В открывшийся файл добавьте (или допишите к существующему объекту) строки: ```json "http.proxy": "socks5://127.0.0.1:10809", "https.proxy": "socks5://127.0.0.1:10809" ``` Сохраните файл. Настройки применятся автоматически. --- ## Порядок работы каждый раз 1. **Сначала** запустите туннель (скриптом или командой `ssh -D 10809 ...`). Дождитесь, что он поднялся (проверка через `status` или `netstat`). 2. **Потом** откройте Cursor и работайте как обычно. Cursor будет отправлять трафик через туннель на порт 10809. Если туннель не запущен, Cursor может снова показывать PING timeout или не подключаться к серверам. --- ## Автозапуск туннеля при входе в Windows Чтобы не запускать туннель вручную каждый раз, можно настроить его старт при входе в систему. ### Способ 1: Планировщик заданий 1. Нажмите **Win+R**, введите **taskschd.msc** и нажмите Enter. Откроется **Планировщик заданий**. 2. Справа нажмите **Создать задачу…** (не «Создать простую задачу»). 3. Вкладка **Общие**: - Имя: например **Cursor SOCKS tunnel**. - Отметьте «Выполнять для всех пользователей» при необходимости; «Выполнять с наивысшими правами» можно не ставить. 4. Вкладка **Триггеры** → **Создать**: - Начать задачу: **При входе в систему**. - Пользователь: ваш пользователь Windows. ОК. 5. Вкладка **Действия** → **Создать**: - Действие: **Запуск программы**. - Программа или сценарий: **powershell.exe**. - Добавить аргументы: - Если используете скрипт из репо (подставьте свой путь к папке local_machine): ```text -NoProfile -WindowStyle Hidden -File "C:\Users\ВашеИмя\путь\к\local_machine\docs\cursor\scripts\cursor-socks-tunnel.ps1" start ``` - Или без скрипта (фон; только Mac→RU→DO, нужен доступ к RU): ```text -NoProfile -WindowStyle Minimized -Command "ssh -D 10809 -o ServerAliveInterval=60 -o ServerAliveCountMax=4 telegram-socks-via-do" ``` Нажмите ОК. 6. ОК по задаче. При следующем входе в Windows туннель должен запускаться сам. ### Способ 2: Ярлык в папке «Автозагрузка» 1. Нажмите **Win+R**, введите **shell:startup** и нажмите Enter. Откроется папка автозагрузки вашего пользователя. 2. В этой папке создайте ярлык (правый клик → Создать → Ярлык). 3. В качестве расположения объекта укажите, например (подставьте свой путь к репо): ```text powershell.exe -NoProfile -WindowStyle Normal -File "C:\Users\ВашеИмя\code\local_machine\docs\cursor\scripts\cursor-socks-tunnel.ps1" start ``` 4. Имя ярлыка: например **Cursor tunnel**. Готово. При каждом входе в Windows будет запускаться PowerShell и подниматься туннель. --- ## Если что-то не работает | Ситуация | Что проверить и сделать | |----------|-------------------------| | **Cursor не подключается, ошибки в чате** | 1) Туннель действительно запущен: в PowerShell `.\docs\cursor\scripts\cursor-socks-tunnel.ps1 status` или `netstat -an \| findstr 10809`. 2) В настройках Cursor указано ровно `socks5://127.0.0.1:10809`. 3) Перезапустите Cursor (полностью закрыть и открыть снова). | | **Всё ещё PING timed out** | Убедитесь, что в настройках Cursor **Disable Http2** выключен (HTTP/2 включён). Перезапустите туннель и Cursor. | | **Порт 10809 занят** | Другой программой уже занят. Можно сменить порт: например 10810. Тогда в команде туннеля замените 10809 на 10810 и в Cursor укажите `socks5://127.0.0.1:10810`. | | **Туннель обрывается через время** | В команде SSH должны быть параметры `ServerAliveInterval=30` и `ServerAliveCountMax=6` — в скрипте они уже есть; при ручном запуске используйте команду из Варианта B. | | **Ошибка при запуске скрипта .ps1** | Выполните один раз: `Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned` и ответьте Y. | | **SSH просит пароль** | Ключ не подхватывается. Проверьте, что файл лежит по пути `C:\Users\ВашеИмя\.ssh\id_ed25519` и в команде указан `-i $env:USERPROFILE\.ssh\id_ed25519`. При необходимости заново установите ключ по [WINDOWS_SSH_KEY_INSTALL.md](./WINDOWS_SSH_KEY_INSTALL.md). | Логи Cursor на Windows лежат в папке: `%APPDATA%\Cursor\logs\` (файл `main.log`). В проблемных местах ищите слова ERROR, PING, timeout, ECONNREFUSED, ETIMEDOUT. --- ## Ссылки | Документ | Для чего | |----------|----------| | [WINDOWS_SSH_KEY_INSTALL.md](./WINDOWS_SSH_KEY_INSTALL.md) | Установка SSH-ключа на Windows (если ещё не сделано). | | [PROXY_GUIDE.md](./PROXY_GUIDE.md) | Общее описание прокси ru.hunab.app. | | [README.md](./README.md) | Содержимое папки connectivity. |