# Установка 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`
