# Установка SSH-ключа на Windows (только для туннеля через прокси) Инструкция для тех, кто впервые настраивает такой доступ. Все шаги расписаны по порядку. --- ## Зачем это нужно Чтобы Cursor (или Telegram) на Windows могли работать через прокси-сервер **ru.hunab.app**, нужен **SSH-ключ**. Это пара файлов: «приватный» (секретный, хранится только у вас) и «публичный» (его один раз добавляют на сервер). После этого Windows сможет подключаться к серверу **без ввода пароля**, только по ключу. Ключ используется **только для туннеля** — никаких прав на сервере пользователю не нужно. **Если с Windows нет доступа к интернет-серверу** (например, вы за корпоративным файрволом), ключ создают на другой машине (Mac), публичный ключ ставят на сервер, а **приватный ключ** переносят на Windows. Дальше в инструкции два варианта: A (ключ создан на Mac) и B (ключ создают на самой Windows). --- ## Небольшой словарик | Слово | По-простому | |-------|-------------| | **SSH** | Способ безопасно подключаться к удалённому компьютеру по сети. | | **SSH-ключ** | Пара файлов (приватный + публичный). Вместо пароля сервер проверяет, что у вас есть «ваша половина» ключа. | | **Приватный ключ** | Файл `id_ed25519`. Храните только у себя, никому не отдавайте. | | **Публичный ключ** | Файл `id_ed25519.pub`. Его один раз добавляют на сервер в список разрешённых ключей. | | **%USERPROFILE%** | Папка вашего пользователя Windows, например `C:\Users\Иван`. В PowerShell то же самое записывается как `$env:USERPROFILE`. | | **PowerShell** | Программа в Windows для ввода текстовых команд. Открывается через поиск по названию «PowerShell» или через меню Win+X → «Windows PowerShell». | --- ## Вариант A: Ключ создан на Mac (с Windows до сервера доступа нет) Этот вариант для ситуации, когда с Windows-компьютера вы **не** можете зайти на сервер 149.154.64.19 (нет доступа в интернет к нему или он закрыт). Ключ создаётся на Mac (или другой машине, с которой сервер доступен), затем **один файл** переносится на Windows. ### Часть 1. На Mac (или другой машине с доступом к серверу) 1. Откройте **Терминал** на Mac. 2. Перейдите в папку с репозиторием **local_machine** (корень репо — та папка, где лежат папки `docs`, `scripts` и т.д.): ```bash cd /путь/к/local_machine ``` Пример: `cd /Users/eternal/code/local_machine` 3. Запустите скрипт: ```bash ./docs/connectivity/scripts/create-windows-proxy-key.sh ``` 4. Скрипт создаст ключ и сам добавит публичный ключ на сервер. В конце он выведет текст вроде: - «Скопировать на Windows один файл: …/windows-proxy-key/id_ed25519» - «На Windows положить в: %USERPROFILE%\.ssh\id_ed25519» Запомните или сохраните этот путь к файлу на Mac. Публичный ключ на сервер уже добавлен, больше на Mac ничего делать не нужно. ### Часть 2. На Windows — куда положить ключ **Куда копировать:** в папку вашего пользователя, в подпапку `.ssh`. Полный путь выглядит так: - `C:\Users\**ИмяПользователя**\.ssh\id_ed25519` **ИмяПользователя** — это то имя, под которым вы входите в Windows (та же папка, что открывается, когда вы в проводнике заходите в «Этот компьютер» → «Локальный диск (C:)» → «Users»). **Как сделать по шагам:** 1. **Создать папку `.ssh`**, если её ещё нет: - Нажмите **Win+R** (клавиша с логотипом Windows и буква R). - Введите: `%USERPROFILE%` и нажмите Enter. Откроется ваша папка пользователя (например, `C:\Users\Иван`). - В этой папке создайте новую папку с именем **`.ssh`** (точка в начале обязательна). Если Windows спросит про объединение имени — оставьте именно `.ssh`. 2. **Скопировать файл с Mac на Windows** (флешка, облако, мессенджер — как удобно). Файл должен называться **`id_ed25519`** (без расширения .txt и без .pub). 3. **Положить файл в папку `.ssh`:** - Перетащите `id_ed25519` в папку `C:\Users\**ВашеИмя**\.ssh\` - Итог: файл должен лежать по пути `C:\Users\**ВашеИмя**\.ssh\id_ed25519`. ### Часть 3. Проверка на Windows 1. Откройте **PowerShell** (поиск в меню Пуск: «PowerShell» → «Windows PowerShell»). 2. Введите команду (можно скопировать целиком; путь подставится сам): ```powershell ssh -i $env:USERPROFILE\.ssh\id_ed25519 ahau@149.154.64.19 "echo OK" ``` 3. При первом запуске может появиться вопрос «Trust this host?» — введите **yes** и нажмите Enter. 4. **Ожидаемый результат:** в следующей строке выводится только слово **OK**. Пароль спрашивать не должно. Если вывело **OK** — ключ установлен правильно. Дальше: настройка туннеля и Cursor по инструкции [WINDOWS_CURSOR_TUNNEL.md](./WINDOWS_CURSOR_TUNNEL.md). Если появилась ошибка (например, «Permission denied» или «Could not resolve hostname»), проверьте: - файл лежит именно в `C:\Users\**ВашеИмя**\.ssh\id_ed25519`; - файл скопирован полностью, не переименован в `id_ed25519.txt`; - с Mac скрипт действительно выполнился до конца и написал, что публичный ключ добавлен на сервер. --- ## Вариант B: Ключ создаётся на Windows (с Windows есть доступ к серверу) Если с вашего Windows-компьютера **есть** доступ в интернет до 149.154.64.19, ключ можно создать прямо на Windows и один раз добавить публичный ключ на сервер (с этой же Windows или с Mac). ### Что понадобится - Файл **`setup-ssh-key-for-proxy.ps1`** из репо: `docs/connectivity/scripts/setup-ssh-key-for-proxy.ps1`. Скопируйте его на Windows в любую папку (например, «Загрузки» или папку с репо). - В Windows должен быть установлен **OpenSSH-клиент**. Проверка: откройте PowerShell и введите `ssh -V`. Должна появиться строка с версией (например, OpenSSH_for_Windows_8.x). Если команда не найдена — установите: **Параметры Windows** → **Приложения** → **Дополнительные компоненты** → найдите **OpenSSH-клиент** → Установить. ### Шаг 1. Разрешить выполнение скриптов (сделать один раз) 1. Откройте **PowerShell** (не cmd). Лучше «Запуск от имени текущего пользователя». 2. Введите команду: ```powershell Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned ``` 3. На вопрос о смене политики ответьте **Y** (или **A**) и нажмите Enter. ### Шаг 2. Запустить скрипт установки ключа 1. В PowerShell перейдите в папку, куда положили `setup-ssh-key-for-proxy.ps1`. Пример для папки «Загрузки»: ```powershell cd $env:USERPROFILE\Downloads ``` Если файл в другой папке, подставьте свой путь вместо `Downloads`. 2. Запустите скрипт: ```powershell .\setup-ssh-key-for-proxy.ps1 ``` 3. **Если ключа ещё нет:** скрипт спросит, создать ли новый ключ. Введите **Y** и Enter. Он создаст файлы в папке `%USERPROFILE%\.ssh\` и выведет **одну длинную строку** (публичный ключ). Эту строку нужно один раз добавить на сервер (см. ниже). 4. **Если ключ уже лежит в `%USERPROFILE%\.ssh\id_ed25519`:** скрипт просто проверит подключение и напишет что-то вроде `[OK] SSH works`. ### Шаг 3. Добавить публичный ключ на сервер (только если ключ создали на Windows) Если вы только что сгенерировали ключ на Windows, скрипт вывел строку вида: `ssh-ed25519 AAAAC3... много символов ... windows-proxy-tunnel` Эту строку **целиком** нужно один раз добавить на сервер 149.154.64.19 в файл `~/.ssh/authorized_keys` пользователя **ahau**. Сделать это может кто-то с доступом к серверу (например, с Mac): ```bash # Выполнить на сервере 149.154.64.19 под пользователем ahau (или с Mac: ssh ahau@149.154.64.19) echo "ВСТАВЬТЕ_СЮДА_ЦЕЛИКОМ_СТРОКУ_ИЗ_СКРИПТА" >> ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys ``` После этого на Windows снова запустите `.\setup-ssh-key-for-proxy.ps1` — должно появиться `[OK] SSH works`. ### Шаг 4. Проверить подключение вручную В PowerShell: ```powershell ssh -i $env:USERPROFILE\.ssh\id_ed25519 ahau@149.154.64.19 "echo OK" ``` Должно вывести **OK** без запроса пароля. --- ## Дальше - Настройка туннеля и Cursor: [WINDOWS_CURSOR_TUNNEL.md](./WINDOWS_CURSOR_TUNNEL.md). - Приватный ключ (`id_ed25519`) никому не передавайте и не выкладывайте никуда. --- ## Кратко: какие файлы для чего | Файл | Где запускать | Что делает | |------|----------------|------------| | **create-windows-proxy-key.sh** | На **Mac** (в папке репо) | Создаёт ключ, добавляет публичный ключ на сервер. Приватный ключ остаётся в папке `windows-proxy-key/` — его нужно скопировать на Windows. | | **setup-ssh-key-for-proxy.ps1** | На **Windows** | Проверяет или создаёт ключ в `%USERPROFILE%\.ssh\`, проверяет подключение к серверу, при необходимости дописывает в конфиг SSH хост `hsites-ahau`. | Пути в репозитории: `docs/connectivity/scripts/create-windows-proxy-key.sh` `docs/connectivity/scripts/setup-ssh-key-for-proxy.ps1`